Ser*_*pth 9 javascript signals node.js
我正在进行一个节点项目,我想在退出时写一些内存到文件.我认为这很简单:
process.on('exit', function () {
//handle your on exit code
console.log("Exiting, have a nice day");
});
Run Code Online (Sandbox Code Playgroud)
但是,当收到CTRL + C时,此代码不会执行(在Windows上).鉴于这是退出Node的实际方法,这似乎有点问题.
此时我尝试处理信号(on.('SIGINT',...)),这导致错误:
node.js:218 throw e; // process.nextTick错误,或第一次勾选时出现'error'事件^错误:在EventEmitter中没有这样的模块.(node.js:403:27)在Object.(C:\ Users\Mike\workspace\NodeDev\src\server.js:5:9)在Module._compile(module.js:434:26)的Object..js(module.js:452:10)at at Module.load(module.js:353:32)位于Array.(load.js:310:12)的Array.0(module.js:472:10),位于EventEmitter._tickCallback(node.js:209:41) )
关闭一个快速的谷歌,似乎 Node根本不处理Windows上的信号,CTRL + C实际上不会触发"退出"事件.上述错误不应在*Nix系统上退出.
但是,关闭Windows平台对我来说不是一个有效的选项,所以我需要一个解决方法.有没有办法处理Node中的On Exit事件,这是由用户按CTRL + C终止脚本引起的?
pim*_*vdb 11
我用这段代码来监听密钥.它似乎也适用CTRL + C
于Windows.
但是它再次只能CTRL + C
作为一个关键组合,而不是其他任何东西.当然,您可以将函数绑定到process.on("exit"
,并在if
下面的块中调用它.
var tty = require("tty");
process.openStdin().on("keypress", function(chunk, key) {
if(key && key.name === "c" && key.ctrl) {
console.log("bye bye");
process.exit();
}
});
tty.setRawMode(true);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5027 次 |
最近记录: |