javascript - 加载页面时Nodejs Web服务器两次调用requestListener

标签 javascript node.js

以下是文档中的示例 Web 服务器,并添加了计数器。每当客户端/浏览器请求页面时,它将计数器打印到控制台。

但是,当浏览器请求时,它会被调用两次。为什么?

这是我所期望的:

browser : Hello World 1
console : Counter 1
[reload page]
browser : Hello World 2
console : Counter 2

但是会发生这种情况:

browser : Hello World 1
console : Counter 1
          Counter 2
[reload page]
browser : Hello World 3
console : Counter 3
          Counter 4

我使用命令行运行代码

$ node example.js

代码如下:

  var 
    http = require('http'),
    counter = 0,
    sys = require('util');
  http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    counter++;
    res.end('Hello World ' + counter + '\n');
    sys.puts('Counter ' + counter);
  }).listen(8000, "");

最佳答案

在编程中,当卡住时,跟踪代码以更好地了解正在发生的事情总是很方便。最简单的方法是添加更多的调试/打印语句,直到您可以看到发生了什么。

将 sys.puts 行更改为:

sys.puts('Counter ' + counter + " from " + req.url);

我想你会发现第二个请求是浏览器请求网站的图标。

关于javascript - 加载页面时Nodejs Web服务器两次调用requestListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3938369/

相关文章:

node.js - Nginx、Node、Angular - 子文件夹 API/URL 配置

node.js - 包含 pug 文件会导致错误,但 jade 工作正常

javascript - 在 Express 中运行自定义模块

asp.net - RESTful URL、母版页和 PreviousPage 问题

javascript - 如何将项目添加到 dojo 中的组合框?

javascript - 如何从div中获取格式化文本?

javascript - 找不到模块 "mysql"

javascript - 如何判断元素的哪一部分在视口(viewport)内?

Node.js 异步回调工厂

javascript - 如何在 grunt 中创建许多单独的 uglify 任务?