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)を2回発行しない限り、このプロセスでは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)
$
もう1つの注意点。このExpress.jsサービスを開始し、リクエストを送信しないと、SIGINT
正しく終了します。
明らかに、私がここで見逃している基本的なものがありますか?