Meteor中是否存在阻止process.on(' exit',function(){});从解雇?

时间:2018-01-29 16:55:24

标签: javascript meteor

我正在使用黑猩猩在Meteor的聊天应用程序上进行验收测试。我在服务器启动时创建测试用户,并希望在关闭时删除它们。

我在这里找到了应该解决的问题: doing a cleanup action just before node.js exits

但是当服务器关闭时,这不会触发。

代码如下:

Meteor.startup(function() {

    ....

    if (process.env.TEST_MODE === 'true') {

        process.stdin.resume();//so the program will not close instantly

        function exitHandler(options, err) {
            if (options.cleanup) //Teardown test users;
            if (err) console.log(err.stack);
            if (options.exit) process.exit();
        }

       //do something when app is closing
       process.on('exit', exitHandler.bind(null,{cleanup:true}));

       //catches ctrl+c event
       process.on('SIGINT', exitHandler.bind(null, {exit:true}));

       // catches "kill pid" (for example: nodemon restart)
       process.on('SIGUSR1', exitHandler.bind(null, {exit:true}));
       process.on('SIGUSR2', exitHandler.bind(null, {exit:true}));

       //catches uncaught exceptions
       process.on('uncaughtException', exitHandler.bind(null, {exit:true}));

    }

    ....

}

1 个答案:

答案 0 :(得分:0)

我在intellij工作,当使用红色方块停止进程时,它结束了它们" ungracefully",因此退出挂钩不运行。所以这段代码确实可以正常工作。