Мне нужно сделать некоторые полезные вещи, когда моя служба 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();
});
Но процесс не возвращает мне приглашение Bash, если я не выпущу SIGINT
(Control - C) дважды:
$ 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
завершается правильно.
Очевидно, есть что-то фундаментальное, что я здесь отсутствует?