当我的Express.js服务停止时,我需要做一些有用的事情SIGINT
。使用 Express.js 版本 3.0.6,我知道这应该可以工作:
var express = require('express');
var app = express();
var server = app.listen(3000);
process.on('SIGINT', function() {
console.log('Do something useful here.');
server.close();
});
SIGINT
但是,除非我发出( Control- C) 两次,否则该过程不会给我返回 Bash 提示:
$ node problem.js
^CDo something useful here.
^CDo something useful here.
net.js:1046
throw new Error('Not running');
^
Error: Not running
at Server.close (net.js:1046:11)
at process.<anonymous> (/path/to/problem.js:8:10)
at process.EventEmitter.emit (events.js:93:17)
at SignalWatcher.startup.processSignalHandlers.process.on.process.addListener.w.callback (node.js:486:45)
$
还有一个警告。如果我启动此 Express.js 服务并且不发送任何请求,则SIGINT
正确终止。
显然,我在这里缺少一些基本的东西?