发生未捕获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..
-
使用像nodemon / forever这样的监视器重新启动应用程序
process.on('uncaughtException',function(err){
的console.log(ERR); //发送一些关于错误的通知
process.exit(1); });用你的应用程序开始
- nodemon
nodemon ./server.js
- 永远
永远server.js启动
-
使用群集重新启动
此方法涉及一个进程集群,其中主进程在其中任何一个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
。