堆栈跟踪中仅显示我的代码行?"/>
在 NodeJS 的错误堆栈跟踪中仅显示我的代码行?
有没有办法从错误堆栈跟踪中过滤掉我无法控制或调试的代码行?我的意思是,我的 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_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'))
}
更多推荐
在 NodeJS 的错误堆栈跟踪中仅显示我的代码行?
发布评论