1

node.js は初めてで、http リクエストを作成しようとしています。random.org を呼び出そうとするチュートリアルに従いました。これは私のapp.jsファイルです:

var http = require('http');

//The url we want is: 'www.random.org/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
var options = {
  host: 'www.random.org',
  path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
};

callback = function(response) {
  var str = '';

  //another chunk of data has been recieved, so append it to `str`
  response.on('data', function (chunk) {
    str += chunk;
  });

  //the whole response has been recieved, so we just print it out here
  response.on('end', function () {
    console.log(str);
  });

  response.on('error', function () {
    console.log("err");
  });
}

http.request(options, callback).end();

とにかく、このファイルを使用して実行するとき

node app.js

コンソールに次のエラーが表示されます。

C:\Program Files\nodejs>node app.js

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: connect ETIMEDOUT
    at errnoException (net.js:901:11)
    at Object.afterConnect [as oncomplete] (net.js:892:19)

2 つの問題:
1. タイムアウト エラーが発生するのはなぜですか (サイトは動作します - チェックしました)

どんな助けでも大歓迎です!

ありがとう

4

2 に答える 2

4

エラーリスナーをレスポンスに添付していますが、リクエスト自体でエラーが発生します。このようなことをしてください:

http.request(options, callback)
.on('error', function () {
    console.log("err in request");
})
.end();

エラーは、サイトが利用可能であることを意味します。そうでない場合、エラーが表示されEHOSTUNREACHます。ETIMEDOUT要求が十分に速く応答されなかったことを意味します。調査が必要です。ネットワークがダウンしているようです。取得してみてくださいwww.google.com。考慮しているタイムアウト値は何ですか? 等

于 2013-08-05T11:30:43.610 に答える
0

わかった。ブラウザをバックグラウンドとして使用せずに、これをスタンドアロン ノード js プロセスとして実行しようとしました。これは推奨されません。上記のケースでは、このヘッダーレス リクエストに Cookie がないことが問題でした。

createServer メソッドですべてをラップし、要求に応じて、同じパラメーター + サーバー要求からの Cookie を使用して http.request を実行すると、これは機能します。

于 2013-08-11T07:59:48.480 に答える