5

我想要一些关于进程退出的工作。

process.on('exit')不能使用 express 或 socket.io 或 mysql 等。

process.on('exit', function() {
    console.log('Server exit.');
});

只有这段代码有效。

var mysql = require('mysql');
var conn = mysql.createConnection();

conn.connect();

process.on('exit', function() {
    console.log('Server exit.');
});

这是行不通的。

4

2 回答 2

4

您可以通过做两件简单的事情来使其工作:

  1. 而不是使用exit事件,而是使用SIGINT事件(而不是process.on('exit',function(){/*stuff here*/});使用process.on('SIGINT',function(){/*stuff here*/});
  2. 启动永远脚本时,不要只是做forever start your-script.js,输入forever start your-script.js --killSignal=SIGINT

这对我有用,但我的脚本没有使用太多 mysql 也没有使用任何 express,所以它可能不适合你

于 2014-06-07T20:49:56.750 回答
2

那是因为一旦你初始化express(),比如说(特别是:启动服务器),或者创建一个 MySQL 连接,或者做任何其他“生活在后台”的事情,节点将不会退出,所以不会调用你.on('exit')

它不会退出,因为它有待处理的任务。就像您要调用setInterval().

如果您断开 MySQL 连接或停止 express 服务器,它将退出并调用您的处理程序。

于 2013-09-21T06:45:00.280 回答