有没有什么好的理由让你的应用程序为node.js调用`process.exit()`?

时间:2017-12-02 23:54:01

标签: node.js express

有很多问题要问:我们如何退出以及它在节点js中的确切作用:使用process.exit()命令。但是何时以及为什么需要退出?

我目前的理解是node/nodemon app.js启动了我们网站运行的服务器的流程。所以我们何时以及为什么 是否需要在生产中关闭它?

在看到如何关闭这篇SO文章(接受的答案,评论部分)上的MongdoDB连接后,我遇到了这个问题: Mongoose Close Connection

1 个答案:

答案 0 :(得分:3)

对于像Heroku这样的云服务,

process.exit()有点需要。

如果您在Heroku等服务上托管您的应用程序,那么该应用程序将每天至少重启一次。这称为cycling。当Heroku dyno循环时,它会将SIGTERM发送到应用程序,例如,可以通过以下方式处理:

process.on('SIGTERM', gracefulShutdown);

function gracefulShutdown() {
  mongoose.connection.close(() => {
    console.log('Shutting down');
    process.exit(0);
  });
}

当应用程序被sigtermed时,我们希望在继续关闭之前优雅地关闭数据库连接。我们通过监听SIGTERM事件来停止默认行为,但我们仍然必须做SIGTERM应该做的事情,这就是停止进程。 Heroku将在之后重新启动应用程序。