我正在编写一个应用程序,定期检查远程服务器以检入新版本的软件。这是我在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(' error',...)部分。 但是,正如您从错误中看到的那样,它没有向我提供我尝试设置的错误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行以及整个回调函数,使用catch块只是console.log错误
process.on(' uncaughtException'
domain.create& domain.run
答案 0 :(得分:1)
您应该在http.request
的实例中添加错误处理程序。
例如,您可以将http.request
来电更改为:
var req = http.request(hostinfo, callback1);
req.on('error', function(err) { console.log("ERROR: " + err.message); });
req.end();
阅读here了解详情。