gpt4 book ai didi

node.js - 如何在出现全局错误时在脚本内部重新启动 Node.js 服务器?

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:50 24 4
gpt4 key购买 nike

我一直在浏览但没有成功。我发现了一些 npm 包,例如 nodemon 和 Forever,但文档没有解释如何在脚本内正确调用重新启动。

我找到了this另一个问题的代码片段,但我没有使用 Express 或其他框架,因为脚本使用的是拉取服务而不是响应服务。

这是我迄今为止使用内部 Node.js 依赖项编写的代码,但没有成功。

<小时/>
'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)
<小时/>

请注意,我在 Termux 上运行服务器,Termux 是一个适用于 Android 的 Linux 终端应用程序。我知道最好从桌面运行,但我总是在 WiFi 或移动数据区域,并且我不喜欢让我的电脑过夜。

最佳答案

使用nodemon或forever之类的典型重启将通过在脚本中调用process.exit()来触发。

这将退出当前脚本,然后监控代理将看到它已退出并为您重新启动它。它的原理与它自己崩溃的原理相同,但如果您尝试安排它关闭,您只需退出该进程,然后监控代理将重新启动它。

我有一个家庭自动化服务器,正在永久监控。如果它永远崩溃,它将自动重新启动。我还设置了它,以便每天早上 4 点,它会调用 process.exit() ,然后永远自动重新启动它。我这样做是为了防止长时间内存泄漏累积,对于我的应用程序来说,半夜 30 秒的停机时间没什么大不了的。

关于node.js - 如何在出现全局错误时在脚本内部重新启动 Node.js 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48574071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com