以编程方式重启Node.js服务器



如何从代码重启Node.js服务器?例如,如果使用expressjs框架,

app.get('/restart', function (req, res, next) {
//Code to restart a server
})

我想从这样的应用程序重新启动服务器,不去控制台等。怎么做呢?

我使用forever来启动和监视应用程序。所以重启函数像这样:

app.get('/restart', function (req, res, next) {
  process.exit(1);
});

服务器关闭后,forever将重启服务。

控制台:

<>之前快速服务器在开发模式下监听端口3000错误:永远检测到脚本退出代码:1错误:永远重新启动脚本2次快速服务器在开发模式下监听端口3000

结合npm restartchild_process.exec(),似乎有可能以编程方式重新启动服务器。由于它允许运行多个脚本来停止、重新启动和启动,因此该选项甚至适用于多进程服务器或其他复杂的服务器,这些服务器不能简单地调用process.exit()

您可以将子进程标记为分离的,我相信这会使它在父进程被破坏后存活下来。所以如果你用这个词,加上"睡眠"在命令开始时执行命令(如果并发运行是一个问题),它应该可以工作。

所以大概是这样的(未经测试):

const newProcessInstance = spawn(process.argv[0], process.argv.slice(1), {
  detached: true,
  stdio: 'ignore', // not sure if this is needed
});

最新更新