首页 > 解决方案 > 为什么 nodejs 在未声明的变量上静默失败?

问题描述

为什么 nodejs 在未声明的变量上静默失败?它什么也没说,没有堆栈跟踪等。这是调试最糟糕的情况。

如何让它像任何其他语言一样嘈杂?

这是一个用 nodejs 编写的小命令行实用程序。它不像大多数人正在制作的网络应用程序。我很好。它按预期工作,我很高兴将代码移植过来,一切正常,除非我打错字然后它默默地失败了。

// Typo: should be var or const foo but I missed it and I want nodejs  to error about it like any other language
foo = func();

我在某处得到提示,承诺正在消除这样的错误。如果是这样,为什么,是否有解决方法,最好让它大声死去。

谢谢

标签: node.jsdebugging

解决方案


射击我。我错过了将承诺拒绝的结果记录在更高的位置。一旦我把它放进去,我就开始看到非常有帮助的错误和堆栈跟踪。

如果我记得记录所有拒绝错误,那就没问题了。

神奇之处在于,promise 将使用异常并将它们作为结果对象自动发送到拒绝处理程序。

这个问题+答案很有帮助:

https://stackoverflow.com/a/46512164/3727869


推荐阅读