无法在nodeJS中获取pm2退出或停止事件

时间:2019-08-27 13:32:52

标签: node.js pm2

  1. 我正在使用pm2来保持服务器在nodeJS中启动
  2. 代码已上传到服务器并运行命令 pm2 start app.js --name appName
  3. 但是在某些情况下,如果代码或其他内容出错,则pm2停止或杀死所有进程
  4. 当时我想发送 pm2进程已停止或终止的邮件
  5. 我在app.js中使用pm2.connect,但是无论何时pm2停止或终止,都无法获取事件,这是代码

    var pm2 = require('pm2');
    
    pm2.connect(function() {
       pm2.launchBus(function(err, bus) {
          bus.on('process:event', function(data) {
             console.log('IN APP ===>', data.event);
             Logger.info("IN APP ====> ", data.event);
             if (data.event === "exit") {
                console.log('IN APP exit', data.event);
                Logger.info("IN APP exit ====> ", data.event);
             }
        });
      });
    });
    
  

使用此代码,当pm2停止或终止时我无法获得任何事件

1 个答案:

答案 0 :(得分:0)

您可以侦听节点进程事件,并注册回调函数,请检查以下代码。

** Ps:您必须在回调函数中运行process.exit();才能关闭应用程序**

您可以致电process.exit();而不是发回邮件

function cb () {
    // Do stuff 
    // Send email 

     process.exit();

 }

 //do something when app is closing
 process.on('exit', cb );

  //catches ctrl+c event
  process.on('SIGINT', cb );

   // catches "kill pid" (for example: nodemon restart)
   process.on('SIGUSR1', cb );
   process.on('SIGUSR2', cb );

   process
       .on('uncaughtException', err => {
         console.error(err, 'Uncaught Exception thrown');
          process.exit(1);
         });