发生未捕获exception时重新启动Node.js应用程序

发生exception时,如何重新启动我的应用程序?

process.on('uncaughtException', function(err) { // restart app here }); 

你可以把这个进程作为另一个进程的分支来运行,所以如果它死了就可以分叉它。 您可以使用本地的Cluster模块进行以下操作:

 var cluster = require('cluster'); if (cluster.isMaster) { cluster.fork(); cluster.on('exit', function(worker, code, signal) { cluster.fork(); }); } if (cluster.isWorker) { // put your code here } 

此代码生成一个工作进程,如果在工作进程中引发错误,它将closures,并且退出将重新生成另一个工作进程。

你有几个select..

  1. 使用像nodemon / forever这样的监视器重新启动应用程序

    process.on('uncaughtException',function(err){
    的console.log(ERR); //发送一些关于错误的通知
    process.exit(1); });

    用你的应用程序开始

    • nodemon

    nodemon ./server.js

    • 永远

    永远server.js启动

  2. 使用群集重新启动

此方法涉及一个进程集群,其中主进程在其中任何一个subprocess重新启动,如果他们终止

 var cluster = require('cluster'); if (cluster.isMaster) { var i = 0; for (i; i< 4; i++){ cluster.fork(); } //if the worker dies, restart it. cluster.on('exit', function(worker){ console.log('Worker ' + worker.id + ' died..'); cluster.fork(); }); } else{ var express = require('express'); var app = express(); . . app.use(app.router); app.listen(8000); process.on('uncaughtException', function(){ console.log(err); //Send some notification about the error process.exit(1); } } 

结帐nodemon和永远 。 我使用nodemon进行开发并永远生产。 奇迹般有效。 只需使用nodemon app.js启动您的应用程序nodemon app.js