求助关于 js Error.stack 的问题

2020-05-10 16:37:43 +08:00
 xiaoming1992

我希望对Error.stack做进一步的处理(其实就是不显示namemessage那一行), 但是只要一处理, 就不能映射到sourceMap了, 代码和打印结果如下, can you help help me?

const { stack } = new Error("")
if (stack) {
  console.log(stack)
  console.log(stack.split("\n").splice(1).join("\n"))
}
// 这是 console.log(stack)
// sourceMap 正确
Error
    at log (index.ts:7)
    at withinRect (index.tsx:39)
    at index.tsx:202
    at updateMemo (react-dom.development.js:16835)
    at Object.useMemo (react-dom.development.js:17315)
    at useMemo (react.development.js:1643)
    at App (index.tsx:202)
    at renderWithHooks (react-dom.development.js:16241)
    at updateFunctionComponent (react-dom.development.js:18328)
    at beginWork$1 (react-dom.development.js:20151)


// 这是 console.log(stack.split("\n").splice(1).join("\n"))
// sourceMap 错误
    at log ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:66434:17)
    at withinRect ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:65917:59)
    at http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:66044:96
    at updateMemo ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:41208:19)
    at Object.useMemo ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:41688:16)
    at useMemo ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:54182:21)
    at App ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:66044:74)
    at renderWithHooks ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:40614:18)
    at updateFunctionComponent ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:42701:20)
    at beginWork$1 ( http://192.168.3.7:8080/static/scripts/index.e7695f.js?e7695f02d813f4d2c31a:44524:16)
1713 次点击
所在节点    JavaScript
5 条回复
YadongZhang
2020-05-10 18:24:17 +08:00
好像力扣前端笔试题?
xiaoming1992
2020-05-10 20:05:55 +08:00
@YadongZhang 刚刚试了一下,sourceMap 发生时机应该是在 console.log 之后,根据 console.log 打印出的字符串进行替换。并且 Error 的 name 应该必须是原生 Error 的 name,只要保留第一行的 Error name,后面的行可进行删减。
Arrowing
2020-05-11 08:33:48 +08:00
没有过这样的需求,先插眼
zqaq520
2020-05-21 10:21:45 +08:00
同问啊,我最近在做前端错误监控系统也遇到类似问题,怎么破?
xiaoming1992
2020-05-22 12:02:10 +08:00
@zqaq520 按照我 2 楼说的做就可以了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/670273

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX