Node.js错误无提示失败

时间:2017-08-18 16:17:54

标签: javascript node.js error-handling

我跳转到node.js项目,其中一些错误无声地失败,除非我把它放在try..catch块中,否则应用程序不会抛出任何错误。例如:

console.log(ok) // doesn't throw any errors during runtime; the api just fails silently.

try {
  console.log(ok)
} catch(e) {
  console.log(e)// throws ReferenceError: ok is not defined
}

有谁知道为什么会这样?

提前谢谢!

1 个答案:

答案 0 :(得分:4)

  

有谁知道为什么会这样?

显然,包含范围内的代码正在捕获并抑制错误。这是一种不幸但常见的做法。

可悲的是,你只需要根除那些代码,没有真正的捷径。您可以使用--inspect(在最新版本的Node上)运行,并告诉调试器停止所有异常,甚至是已捕获的异常,这可能会帮助您跟踪它们。但是我害怕它会很乏味。

还有一种可能的想法:只有稍微旧版本的Node,未报告未处理的Promise拒绝。因此,如果该代码在(例如)Promise执行者(您传递的函数new Promise)或thencatch处理程序(或async函数)内部,则抛出正在被转变为承诺拒绝。最新版本的Node报告未处理的Promise拒绝。 (在不久的将来,他们也将终止节点过程。)