3

以前にノードで実験をしました

次のコードはコンソールに「aaa」を出力し、ブラウザは期待どおりに応答を待ち続けます。

var http = require("http");

http.createServer(function (req, res) {
  //res.writeHead(200);
  console.log("aaa");
  //res.end("hello");
  //console.log("test111");
  //res.end("bye");
}).listen(5555);

出力:

aaa

ただし、最初のres.endのコメントを解除するとすぐに、ノードは1回の要求でコンソールに「aaa」を2回書き込みます。

var http = require("http");

http.createServer(function (req, res) {
  res.writeHead(200);
  console.log("aaa");
  res.end("hello");
  //console.log("test111");
  //res.end("bye");
}).listen(5555);

出力:

aaa
aaa

最後に、すべてのコメントを外すと、

var http = require("http");

http.createServer(function (req, res) {
  res.writeHead(200);
  console.log("aaa");
  res.end("hello");
  console.log("test111");
  res.end("bye");
}).listen(5555);

出力:

aaa
test111
aaa
test111

console.logステートメントが単一のリクエストごとに2回実行される理由はありますか?

4

2 に答える 2

8

最初の例では、ブラウザは応答を受け取らず、そこで停止します。

2番目の例では、ブラウザー応答を受け取り、次に2番目の要求であるファビコンを要求します。

リクエストのURLもログに記録してみてください。

var http = require("http");
http.createServer(function (req, res) {
  console.log("aaa", req.url);
  res.end("bye");
}).listen(5555);

サーバーが稼働しているのがわかります。

aaa /
aaa /favicon.ico
于 2012-07-06T19:59:54.197 に答える
5

これはあなたが探している答えを持っています:

NodeJSサーバーはリクエストごとに変数を2ずつインクリメントします

/と/favicon.icoをヒットしています。

于 2012-07-06T20:00:36.247 に答える