【发布时间】:2018-01-24 22:57:50
【问题描述】:
我有一个用 Node.js 编写的简单 shell 脚本,我正在尝试在进程退出 (⌃C) 之前进行一些清理。我编写了以下代码,但由于某种原因清理功能没有完成。任何想法为什么?
if (keepAlive) {
process.stdin.resume();
['exit', 'SIGINT'].forEach(function(signal) {
process.on(signal, function() {
console.log("Received Signal: '" + signal + "'. Cleaning up...");
cleanup(function(err) {
console.log('this function is called but does not finish')
process.exit();
});
});
});
else {
process.exit();
}
我正在使用 Node v6.9.2
【问题讨论】:
-
未完成是什么意思?
-
您在哪个平台上运行?某些 SIGINT 行为是特定于平台的。
-
@Daniel
cleanup函数被调用,但进程在完成之前退出。 -
@jfriend00 我在 OSX 10.13.2
-
这与我使用的节点模块有关 Inquirer.js。这就是问题所在:github.com/SBoudrias/Inquirer.js/issues/293。我升级了模块,现在一切正常。
标签: node.js process event-handling