Node.js页面刷新调用资源两次

node.js page refresh calling resources twice?

本文关键字:两次 资源 调用 js 刷新 Node      更新时间:2023-09-26

我有一个基本的node.js设置,但我想我错过了一些东西。

My main.js:

var a = require('./another.js');
var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(200, 
    {
        'Content-Type': 'text/html'
    });
    response.write(a.saysomething('Hi there!') + '<br />');
    response.end();
}).listen(27182);
console.log('Server running at http://127.0.0.1:27182/');

My another.js:

exports.saysomething = function (str) {
    console.log('in saysomething!');
    return str + ' hey there!';
}

问题是我的控制台输出in saysomething!两次。我错过什么了吗?当我刷新页面时,我期望只有一个in saysomething!

你的浏览器很可能会试图获得favicon.ico除了你正在点击的url。试着在命令行上执行以下命令:curl http://127.0.0.1:27182/

还可以为request.url添加日志记录。这将显示正在请求的url。

这是理解这个问题的另一种方式。该节点服务器将跟踪所有请求,并在浏览器上以JSON格式显示它们。然后你可以按F5,看看你正在发出的请求。

    var http = require("http");
    var messages = [];
    http.createServer(function(request, response) {
      console.log("We got a hit @ " + new Date());          
      messages.push(request.url);
      messages.push(request.headers);
      response.writeHead(200, {"Content-Type": "text/plain"});
      for ( var i = 0; i < messages.length; ++i ) {
        response.write("'n'n" + JSON.stringify(messages[i]));
      }
      response.end();
    }).listen(8888);

PS:更多信息请参见此副本nodejs - http。createServer似乎调用了两次