Обновите страницу node.js, вызывая ресурсы дважды?

У меня есть базовая настройка node.js, но я думаю, что что-то упустил.

мой 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/');

мой another.js:

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

Проблема в том, что моя консоль выводит in saysomething! дважды. Я что-то пропустил? Когда я обновляю страницу, я ожидаю только одного in saysomething!,

2 ответа

Решение

Ваш браузер, вероятно, пытается получить 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, кажется, вызывает дважды

Другие вопросы по тегам