我使用pm2来管理我的nodejs express应用程序中的进程(以群集模式运行)。
我们有两种错误处理程序
FIRST:' uncaughtException'将用
处理process.on('uncaughtException', function(err){});
实际上,在这种情况下,我没有声明像这样的处理程序让pm2检测到死亡工作者,因此自动重启死亡工作者。
SECOND:表达错误处理程序,我的意思是将错误转发给表达错误处理程序,而不是uncaughtException处理程序,错误处理程序如下
app.use(function(err, req, res, next) {})
我也没有将此错误处理程序声明为与uncaughtException相同的目的。 但在这种情况下,pm2不会重启节点。
对这个问题有什么看法吗? 非常感谢
答案 0 :(得分:3)
当使用快速错误处理程序或甚至“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将重新启动它。