为了尽可能多地从错误中获取信息,我想捕获堆栈跟踪以显示在浏览器控制台中,并将其发送到外部记录器服务。
第一种情况工作正常,当我
console.error(myError)
源映射文件被浏览器正确解释并且堆栈跟踪显示相关文件名时。
但是,当我尝试使用
(new Error()).stack
将堆栈跟踪作为字符串获取时,文件名不相关:
My Error
at applicationError (http://localhost:3000/static/js/main.chunk.js:29259:
at http://localhost:3000/static/js/main.chunk.js:1624:
at onError (http://localhost:3000/static/js/0.chunk.js:82415:3)
at apiCall (http://localhost:3000/static/js/0.chunk.js:82449:12)
at async http://localhost:3000/static/js/main.chunk.js:26165:21
at async App.componentWillMount (http://localhost:3000/static/js/main.chunk.js:246:5)
如何获取“已解析的”堆栈跟踪,以便将相关信息发送到我的记录器?
我已经看到了这些问题,但是,虽然这个问题乍一看似乎很相关,但没有一个回答我的问题:
我也遇到了同样的问题,最后,我找到了这个npm模块:https://www.npmjs.com/package/sourcemapped-stacktrace
自述文件中的示例:
try {
// break something
bork();
} catch (e) {
// pass e.stack to window.mapStackTrace
window.mapStackTrace(e.stack, function(mappedStack) {
// do what you want with mappedStack here
console.log(mappedStack.join("\n"));
}, {
filter: function (line) {
// process only sources containing `spec.js`
return /(spec\.js)/.test(line);
}
});
}