Node.js应用程序退出,如果其他服务器无法访问。 如何防止我的应用程序停止?

我正在编写一个应用程序,定期检查远程服务器以检查新版本的软件。 这是我在node.js上的第一次尝试,请耐心等待。 当服务器启动并运行时,程序运行良好。
但是,当服务器没有运行时,程序退出时出现错误:

events.js:72 throw er; // Unhandled 'error' event ^ Error: connect ECONNREFUSED at errnoException (net.js:904:11) at Object.afterConnect [as oncomplete] (net.js:895:19) 

从我读过的,我相信我已经设置了我的代码,以正确处理错误,包括一个response.on('错误',…)我的callback部分。 然而,正如你从错误中看到的那样,它并没有给我错误的console.logs,我试图设置。 这里是我的代码不工作的部分,如果需要的话,我可以包含其他部分,这只是一个非常大的应用程序在这一点上:

 var index = require ("./index"); var http = require ('http'); var fs = require ("fs"); var apps = [{ "name":"IDSocket", "localVersion": "", "hostVersion": "", "downloadURL": "" }, { "name": "X-Wing vs. Tie Fighter", "localVersion": "4.2.1", "hostVersion": "", "downloadURL": "" }] //checks host server for host version, stores as json object function checkHost(hostinfo){ callback1 = function(response) { var str = ''; var hostObject; response.on('data', function (chunk) { str += chunk; }); response.on('error', function(err) { console.log('problem with request: ' + err.message); hostObject = "why, error? " + err.message }); response.on('end', function () { hostObject = str; hostObject = JSON.parse(hostObject); apps[0]["hostVersion"] = hostObject[0]["version"]; apps[0]["downloadURL"] = hostObject[0]["downloadURL"]; apps[1]["hostVersion"] = hostObject[1]["version"] apps[1]["downloadURL"] = hostObject[1]["downloadURL"] console.log(apps[0]["hostVersion"] + ": recieved IDSocket host version"); index.everyFourHours(); }); } http.request(hostinfo, callback1).end(); }; 

提前感谢帮助我了解这里发生了什么!

编辑:迄今为止我尝试过的东西:

尝试阻塞http.request行以及整个callback函数与catch块只是console.log错误

process.on( 'uncaughtException'

domain.create&domain.run

你应该添加一个error handling程序到你的http.request实例。

例如,你可以改变你的http.request调用:

 var req = http.request(hostinfo, callback1); req.on('error', function(err) { console.log("ERROR: " + err.message); }); req.end(); 

在这里阅读更多信息。