在 NodeJS 的错误堆栈跟踪中仅显示我的代码行?

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

有没有办法从错误堆栈跟踪中过滤掉我无法控制或调试的代码行?我的意思是,我的 nodeJS 项目依赖于许多第三方依赖项,我不会假装调试它们。它只是向堆栈跟踪添加噪音。

比如这里我只想显示第1行和第7行,因为文件

prepareServer.js
是我创建的,其他的都不是我的

Error
    at buildAdministrationsObject (/home/joao/dev/geoptapi/prepareServer.js:350:11)
    at /home/joao/dev/geoptapi/node_modules/async/dist/async.js:3638:28
    at replenish (/home/joao/dev/geoptapi/node_modules/async/dist/async.js:443:21)
    at iterateeCallback (/home/joao/dev/geoptapi/node_modules/async/dist/async.js:427:21)
    at /home/joao/dev/geoptapi/node_modules/async/dist/async.js:324:20
    at /home/joao/dev/geoptapi/node_modules/async/dist/async.js:3643:17
    at /home/joao/dev/geoptapi/prepareServer.js:158:7
    at wrapper (/home/joao/dev/geoptapi/node_modules/async/dist/async.js:271:20)
    at iterateeCallback (/home/joao/dev/geoptapi/node_modules/async/dist/async.js:424:28)
    at /home/joao/dev/geoptapi/node_modules/async/dist/async.js:324:20

基本上我只想在我的项目中的堆栈文件中显示并排除

node_modules/

中的文件
node.js stack-trace
1个回答
0
投票

想出了这个解决方案,用

/node_modules/
\node_modules\

去掉任何一行
const stripedStack = (new Error().stack).replace(/^.*[\\/]node_modules[\\/].*$/gm, '').replace(/\n+/g, '\n')
console.error(stripedStack)

现在如我所愿:)

Error
    at readShapefile (/home/joao/dev/geoptapi/prepareServer.js:106:16)
    at /home/joao/dev/geoptapi/prepareServer.js:100:7

像这样使用 try/catch

try {
  // some code to run
} catch (err) {
  console.error(parseErr(err))
}

function parseErr(err) {
  return ((new Error(err).stack).replace(/^.*[\\/]node_modules[\\/].*$/gm, '').replace(/\n+/g, '\n'))
}
© www.soinside.com 2019 - 2024. All rights reserved.