这里的无提示错误是指任何问题都不会产生任何可见的指示。
一些最常见的示例:
让我们一一详细了解以及如何调试它们:
当您错过将 .catch() 处理程序附加到您的 Promise 时,就会发生这些错误。因此,当承诺被拒绝时,错误不会出现。
您可以通过使用 unhandled-rejections 参数运行代码来调试此错误。它强制节点在未处理的承诺拒绝时终止进程,从而使错误明确。
node --unhandled-rejections=strict script.js
您是否遇到过以下 Node.js 代码:
如果是,那么很可能是由未解决的 Promise 或某个地方的无限循环引起的。
您可以通过限制脚本的执行时间来验证问题,如下所示:
timeout 10s node script.js || echo "Warning: Unresolved promise or infinite loop detected"
当多个回调同时访问共享状态时,会发生共享状态竞争条件。
由于竞争条件,程序会导致不可预测的结果,导致测试期间数据不一致且没有明显症状。
但幸运的是,node 实际上提供了一个 trace-async-hooks 选项来识别此类执行模式。
node --trace-async-hooks script.js 2>&1 | grep "asyncId"
最后我们来谈谈事件监听器中的错误。
这些是由事件侦听器回调中未处理的承诺拒绝引起的。这会导致错误永远不会传播到主执行上下文。
您可以通过将所有节点事件日志重定向到 grep 过滤器以捕获事件处理期间发出的错误来识别这些错误
node -r events script.js 2>&1 | grep "Error"
就是这样。
希望您在调试 JavaScript 代码中的静默错误时会发现这些命令很有用。
另外,请在下面评论哪个无声错误最让你烦恼?
以上是在 JavaScript 中调试'无声错误”的命令的详细内容。更多信息请关注PHP中文网其他相关文章!