我正在使用 pm2 来管理我的 Nodejs Express 应用程序中的进程(以集群模式运行)。
我们有两种错误处理程序
首先:“uncaughtException”将被处理
process.on('uncaughtException', function(err){});
实际上,我没有声明像这样的处理程序,因为在这种情况下让 pm2 检测死亡的工作人员,因此自动重新启动死亡的工作人员。
第二:表达错误处理程序,我的意思是错误将被转发到表达错误处理程序,而不是 uncaughtException 处理程序,如下所示的错误处理程序
app.use(function(err, req, res, next) {})
我也不会出于与 uncaughtException 相同的目的声明此错误处理程序。 但在这种情况下 pm2 不会重新启动 Node 。
对这个问题有什么想法吗? 非常感谢
最佳答案
当使用快速错误处理程序甚至“uncaughtException”事件捕获错误时,该进程仍在运行,因此 pm2 不会重新启动它。 如果您希望 pm2 在每次异常后重新启动,我建议如下:
process.on('uncaughtException', function(e) {
console.log('An error has occured. error is: %s and stack trace is: %s', e, e.stack);
console.log("Process will restart now.");
process.exit(1);
})
对于快速错误处理程序也是如此。当我们执行process.exit方法时,进程将终止,pm2将重新启动它。
关于node.js - 发生 Express 错误时 pm2 不会重新启动工作程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33644079/