在Node.js上进行HTTP请求时出现getaddrinfo ENOENT错误

7
以下是我的Node.js HTTP响应请求者的代码。
当我使用一个我明确知道不存在的网站时,错误消息会通知我错误:getaddrinfo ENOENT 我想了解更多关于这个错误的信息。它是什么导致的?错误的详细信息是什么?404是否会导致它?
var hostNames = ['www.pageefef.com'];

for (i; i < hostNames.length; i++){

    var options = {
            host: hostNames[i],
            path: '/'
    };

  (function (i){
    http.get(options, function(res) {

      var obj = {};
      obj.url = hostNames[i];
      obj.statusCode = res.statusCode;
      // obj.headers = res.headers;

      console.log(JSON.stringify(obj, null, 4));
    }).on('error',function(e){
      console.log("Error: " + hostNames[i] + "\n" + e.message);
    });
  })(i);
};
1个回答

8
您可以这样做以获取有关错误的更多详细信息。
.on('error',function(e){
   console.log("Error: " + hostNames[i] + "\n" + e.message); 
   console.log( e.stack );
});

如果您提供一个不存在的URL,则上述代码将返回:
getaddrinfo ENOTFOUND
Error: getaddrinfo ENOTFOUND
    at errnoException (dns.js:37:11)
    at Object.onanswer [as oncomplete] (dns.js:124:16)

这个错误是由http.request()方法中的http.ClientRequest类抛出的。404错误不会引发此错误。404错误意味着客户端能够与服务器通信,但服务器找不到所请求的内容。而这个错误意味着域名系统无法找到地址(dns.js用于NAPTR查询)。

1
这份详细的错误报告正是我一直在寻找的,但现在我感觉像是一只追到车却不知道该怎么办的狗。一旦我得到了这个错误,我应该怎么做呢?因为有很多种错误,我应该分析它们,还是只是从我的抓取列表中删除这些失效的URL? - theGreenCabbage
错误意味着URL无法访问,因此请检查您的ISP是否已阻止它。否则,您应该删除这些URL。 - user568109

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接