7

以下は、Node.js HTTP 応答リクエスターのコードです。

存在しないことを明示的に知っている Web サイトを使用すると、エラー メッセージで次のエラーが通知されます。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);
};
4

1 に答える 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クエリ用です)。

于 2013-03-20T15:56:54.373 に答える