如何从代码重启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
将重启服务。
结合npm restart
和child_process.exec()
,似乎有可能以编程方式重新启动服务器。由于它允许运行多个脚本来停止、重新启动和启动,因此该选项甚至适用于多进程服务器或其他复杂的服务器,这些服务器不能简单地调用process.exit()
。
您可以将子进程标记为分离的,我相信这会使它在父进程被破坏后存活下来。所以如果你用这个词,加上"睡眠"在命令开始时执行命令(如果并发运行是一个问题),它应该可以工作。
所以大概是这样的(未经测试):
const newProcessInstance = spawn(process.argv[0], process.argv.slice(1), {
detached: true,
stdio: 'ignore', // not sure if this is needed
});