【问题标题】:Show only my lines of code in error stack trace in NodeJS?在 NodeJS 的错误堆栈跟踪中仅显示我的代码行?
【发布时间】:2021-10-06 20:02:43
【问题描述】:

有没有办法从错误堆栈跟踪中过滤掉我无法控制或调试的代码行?我的意思是,我的 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/中的文件

【问题讨论】:

  • @esqew 不,我只是想删除我无法控制的代码行
  • 从技术上讲,您可以控制这些东西。但您可以将这些东西留在您选择的目录中。但是如果您需要该目录之外的东西怎么办?它可以追溯到you technically can control of these things,并且“只有我的代码行”对每个人来说都可能不同..我也不是你 btw 的减号
  • @TheBombSquad 在技术上我可以控制,但它不属于普通 nodejs 开发项目的范围。例如,当您在项目中进行搜索查询时,即使 Atom 也会忽略 node_modules/ 中的文件。在 99% 的情况下,它只会增加噪音。
  • 就是这样......当我看到来自文件的错误时......文件通常以这样的方式命名,你可以知道错误发生在哪里......如果你想知道飞机是如何崩溃了,完整的故事总是有帮助的;-;

标签: node.js stack-trace


【解决方案1】:

想出了这个解决方案,可以去掉/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

【讨论】:

  • 如果您需要自己制作的包裹怎么办
  • @TheBombSquad 我不在乎,那个包应该是健壮的,并且在投入生产之前已经通过了自己的测试脚本。即使它有错误,正如我所说,你提到的只有 1% 的案例。我会说 99% 的案例您使用经过测试的第三方软件包,而问题在于 您的 代码。剩下的就是噪音。此外,我只是希望这是可选。 NodeJS 堆栈跟踪中应该有一种方法可以将您的代码与其他人的代码区分开来
猜你喜欢
  • 2023-03-09
  • 2011-08-07
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
相关资源
最近更新 更多