node.js - 发生 Express 错误时 pm2 不会重新启动工作程序

标签 node.js express error-handling uncaught-exception pm2

我正在使用 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/

相关文章:

node.js - 如何使用 Sequelize 指定只读副本?

javascript - 什么时候是数据库插入的关键部分?

django - 没有收到Django错误电子邮件

node.js - 在 Azure Bot Framework (Nodejs) 中使用 session.send 向对话发送 Webhook 响应

node.js - 使用快速发布方法在数据库中插入新数据

node.js - 使用可扩展 Node.js/Express/MongoDB 的方法将用户匹配在一起进行 1v1 游戏

angularjs - 使用express渲染jade模板后 Bootstrap 按钮间距丢失

web - vbs其他错误信息

vba - 在宏结束之前运行 Sub,如 Finally block

node.js - 在 NodeJS 中修改 HTML 文件