使用源映射时以字符串形式获取堆栈跟踪?

问题描述 投票:0回答:1

为了尽可能多地从错误中获取信息,我想捕获堆栈跟踪以显示在浏览器控制台中,并将其发送到外部记录器服务。

第一种情况工作正常,当我

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)

如何获取“已解析的”堆栈跟踪,以便将相关信息发送到我的记录器?

我已经看到了这些问题,但是,虽然这个问题乍一看似乎很相关,但没有一个回答我的问题:

javascript node.js reactjs error-handling stack-trace
1个回答
0
投票

我也遇到了同样的问题,最后,我找到了这个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);
    }
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.