gpt4 book ai didi

node.js - Node 和 NPM 运行脚本和 Ctrl-C 触发 SIGINT 两次

转载 作者:搜寻专家 更新时间:2023-11-01 00:03:47 24 4
gpt4 key购买 nike

我在使用 npm start 运行我的一个 Nodejs 应用程序时遇到了一个问题(它只是执行 node app.js)。

我的应用程序包含一个 sigint 处理程序,如下所示:

process.on('SIGINT', () => {
db.disconnect().then({
process.exit(0);
}).catch(e => process.exit(1));
});

有相应的日志。在对其他文件进行一些测试后,我注意到在 npm 进程上,如果第一个信号退出时间太长,Ctrl-C 会触发两次 SIGINT。 (尝试在示例应用程序上添加超时)。

现在我已经添加了一个计数器来检查调用是否执行了不止一次,但我不确定这是关于这个问题的“方法”。我猜测 npm 进程上的 SIGINT 预计会在特定时间范围内退出,这就是 npm 再次传递它的原因(总是只有两次)。

有没有人遇到过这个问题并找到了可行的解决方案?

谢谢!

最佳答案

我知道这篇文章已经存在了一段时间,但不幸的是我遇到了同样的问题。仅运行时 node <app.js>它只发出一个信号。如果运行 npm start,该信号会出现两次.相反,我建议检查服务器是否仍在监听,如果是,请继续您的逻辑和内部终止(如数据库连接等):

process.on('SIGINT', function(){
if (server.listening) {
server.close(function (err) {
if (err) {
console.error(err);
process.exit(1)
}
process.exit(0);
})
}
})

关于node.js - Node 和 NPM 运行脚本和 Ctrl-C 触发 SIGINT 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54722158/

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