如何在全局错误脚本中在内部重新启动Node.js服务器?
我一直在四处浏览,但没有成功。我发现了一些npm包,比如nodemon和forever,但文档中没有解释如何在脚本中正确调用重启 我在另一个问题上找到了代码片段,但我没有使用Express或其他框架,因为脚本使用的是拉取服务,而不是响应服务 这是迄今为止我使用内部Node.js依赖项编写的代码,但运气不好如何在全局错误脚本中在内部重新启动Node.js服务器?,node.js,restart,internal,Node.js,Restart,Internal,我一直在四处浏览,但没有成功。我发现了一些npm包,比如nodemon和forever,但文档中没有解释如何在脚本中正确调用重启 我在另一个问题上找到了代码片段,但我没有使用Express或其他框架,因为脚本使用的是拉取服务,而不是响应服务 这是迄今为止我使用内部Node.js依赖项编写的代码,但运气不好 请注意,我正在Termux上运行服务器,Termux是android的Linux终端应用程序。我知道从桌面上运行更好,但我总是在WiFi或移动数据区,我不喜欢让我的电脑整夜开机。在脚本中调
请注意,我正在Termux上运行服务器,Termux是android的Linux终端应用程序。我知道从桌面上运行更好,但我总是在WiFi或移动数据区,我不喜欢让我的电脑整夜开机。在脚本中调用
process.exit()
这将退出当前脚本,然后监视代理将看到它退出并为您重新启动它。它的主体与它自己崩溃时的主体相同,但如果您试图协调它关闭,您只需退出该进程,然后监视代理将重新启动它
我有一个家庭自动化服务器,正在被监控使用永远。如果它永远崩溃,它将自动重新启动。我还将其设置为每天早上4点,它将调用process.exit()
,然后forever将自动重新启动它。我这样做是为了防止任何内存泄漏累积在很长一段时间和30秒的下降时间在午夜,因为我的应用没有什么大不了。奇怪的是,我尝试了NoDimon,但是我不能得到<代码>进程。您是否有一个我可以尝试的最小代码片段,在nodemon脚本和app.js脚本之间用注释分隔?@Nova-我相信nodemon更多的是在修改任何脚本文件时重新启动脚本(对开发有用)。它也会在退出时重新启动脚本,但我认为这并不是它构建的主要目的。这就是为什么我使用。我只是用forever start server.js
启动我的应用程序。因此process.exit()应该会导致forever重新启动app.js?@Nova-是的,如果你使用forever
启动你的应用程序,那么process.exit()
将退出你的应用程序,然后forever
将重新启动它。正如我在回答中所说的,我在家庭自动化服务器中使用的正是这一功能,可以在凌晨4点自动重启。
'use strict'
process.on('uncaughtException', (error) => {
console.error('Global uncaughtException error caught')
console.error(error.message)
console.log('Killing server with restart...')
process.exit(0)
})
process.on('exit', () => {
console.log('on exit detected')
const exec = require('child_process').exec
var command = 'node app.js'
exec(command, (error, stdout, stderr) => {
console.log(`error: ${error.message}`)
console.log(`stdout: ${stdout}`)
console.log(`stderr: ${stderr}`)
})
})
setTimeout(() => {
errorTriggerTimeBomb() // Dummy error for testing triggering uncaughtException
}, 3000)