技术解析

求助关于 js Error.stack 的问题
0
2021-08-16 22:31:38
idczone

我希望对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)

好像力扣前端笔试题?

刚刚试了一下,sourceMap 发生时机应该是在 console.log 之后,根据 console.log 打印出的字符串进行替换。并且 Error 的 name 应该必须是原生 Error 的 name,只要保留第一行的 Error name,后面的行可进行删减。

没有过这样的需求,先插眼

同问啊,我最近在做前端错误监控系统也遇到类似问题,怎么破?

按照我 2 楼说的做就可以了

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服