我有一个Node应用程序,它定义了一些模块然后启动Express服务器。问题是,有时Express服务器无法启动,我没有看到任何错误。
发生这种情况时,我会扫描git diff
以查找潜在的语法错误并修复它们。这解决了问题,我的服务器再次启动。
问题是,我不确定为什么这些语法错误会无声地失败。
我举一个例子:
module.exports = function(server){
this.register = function (params) {
return this.Models.User.register(user)
} // SYNTAX ERROR - extra closing bracket
}
return this
}
当我删除额外的括号时,服务器再次启动,但我原本以为我会看到一个语法错误,而不是盲目地寻找错误。
更多上下文:我的main.js
文件定义了一个返回promise的函数。通过直接运行脚本(nodejs main.js
)来调用promise。
此应用程序中的许多代码都是使用Promises编写的。这会产生压制错误的效果吗?如何确保记录错误,无论它们发生的范围如何?
答案 0 :(得分:1)
您可以使用以下命令开始记录未处理的承诺拒绝:
process.on("unhandledRejection", (err) => {
console.error(err);
});
我们在一年前添加了这个钩子。我有计划记录或抛出默认行为,我为这么长时间道歉。