Node.js を使用して次の Web ページの HTML コンテンツを取得しようとすると、
eternagame.wikia.com/wiki/EteRNA_Dictionary
次のエラーが発生します:
events.js:72
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND
at errnoException (dns.js:37:11)
at Object.onanswer [as oncomplete] (dns.js:124:16)
私はすでにこのエラーを stackoverflow で調べており、これは node.js が DNS からサーバーを見つけられないためだと認識しています (たぶん)。ただし、私のコードは では完全に動作するため、なぜそうなるのかはわかりませんwww.google.com
。
これが私のコードです (ホストが変更されていることを除いて、非常によく似た質問からコピーして貼り付けたものです)。
var http = require("http");
var options = {
host: 'eternagame.wikia.com/wiki/EteRNA_Dictionary'
};
http.get(options, function (http_res) {
// initialize the container for our data
var data = "";
// this event fires many times, each time collecting another piece of the response
http_res.on("data", function (chunk) {
// append this chunk to our growing `data` var
data += chunk;
});
// this event fires *one* time, after all the `data` events/chunks have been gathered
http_res.on("end", function () {
// you can use res.send instead of console.log to output via express
console.log(data);
});
});
以下は私がコピーして貼り付けたソースです:Expressjs で Web サービス呼び出しを行う方法は?
私はnode.jsでモジュールを使用していません。
読んでくれてありがとう。
ベストアンサー1
Node.js モジュールのHTTP
ドキュメント:http://nodejs.org/api/http.html#http_http_request_options_callback
を呼び出すhttp.get('http://eternagame.wikia.com/wiki/EteRNA_Dictionary', callback)
と、URLはurl.parse()
; で解析されます。または を呼び出すとhttp.get(options, callback)
、options
は
{
host: 'eternagame.wikia.com',
port: 8080,
path: '/wiki/EteRNA_Dictionary'
}
アップデート
@EnchanterIO のコメントにもあるように、port
フィールドも別のオプションであり、プロトコルをフィールドhttp://
に含めるべきではありません。他の回答でも、 SSL が必要な場合はモジュールhost
を使用することが推奨されています。https