如果发生错误,使用spawn重新启动NODE服务器

时间:2015-03-17 19:22:56

标签: node.js

我正在尝试使用此代码重新启动节点服务器,如果它意外停止,在此示例中“x”未定义,因此应该给出错误并重新启动,但实际上服务器完全退出。

var http = require('http');
var spawn = require('child_process').spawn;

var server = http.createServer(function (request, response) {
   console.log(x);
});

server.listen(8125, 'localhost', function(err) {
    if(err) spawn('node',['./server.js']);
});

console.log('Server running at http://127.0.0.1:8125/');

2 个答案:

答案 0 :(得分:0)

如果崩溃,您需要forever.js重启您的流程。只要确保没有任何错误会导致每个实例崩溃(基本上,请确保您的应用程序永远有效,并且不会继续尝试重新启动已损坏的应用程序)。

答案 1 :(得分:0)

您的代码中的问题是您无法捕获server.listen中的错误,您应该向主进程添加一个事件处理程序,因此当发生异常或错误时,事件处理程序将管理此异常,下面的代码是在node.js脚本中处理错误的一个例子。

var http = require('http');

var server = http.createServer(function (request, response) {
   console.log(x);
});

server.listen(8125, 'localhost');

process.on('uncaughtException', function(err) {
    // Add some code here to process the excpetion
    console.log('I m here');
});

console.log('Server running at http://127.0.0.1:8125/');