节点http.ClientRequest不会触发"错误"事件

时间:2016-01-16 20:14:08

标签: javascript node.js

我有以下javascript node.js代码:

    var options = {
         host: "x.y.z"
        ,path: "/api/abc/"
        ,method: "GET"
    };

    var req = http.request(options);

   req.on('response' , function(data) {
      console.log("response: ",data.statusCode);
      done();
   });

   req.on('error' , function() {
      console.log("error");
      done();
   });

   req.end();

当发生实际的HTTP请求错误时,我无法获得error事件。我错过了什么?

初步调查结果:看来失败案例"服务器无响应" (例如由于网络问题)不会触发任何事件。因此,解决方法是创建一个计时器'并自己陷入这种状况。

2 个答案:

答案 0 :(得分:0)

尝试使用if / else语句而不是两个独立的函数。

if(response you want && response.statusCode = 200){
   //logic
} else {
   //console.log("error")
}

答案 1 :(得分:0)

您应该在请求中创建自己的超时功能。事实上,我相信经过很长时间(也许一分钟?)后,请求会失败。但是,如果你需要更早的东西,你可以检查这个要求同样的东西:

How to set a timeout on a http.request() in Node?