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

Node.js application quits if other server is unreachable. How do I prevent my application from stopping?

本文关键字:应用程序 退出 何防止 js Node 访问 其他 服务器 如果      更新时间:2023-09-26

我正在编写一个应用程序,该应用程序定期与远程服务器进行登录,以登录新版本的软件。这是我在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.log。这是我的代码中不起作用的部分,如果需要,我可以包括其他部分,这只是一个相当大的应用程序:

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行上的try块以及带有catch块的整个回调函数,catch块只是console.log错误

process.on('ncaughtException'

域。创建&domain.run

您应该向http.request的实例添加一个错误处理程序。

例如,您可以将http.request调用更改为:

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

阅读此处了解更多信息。