我有一个基本的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!
。
答案 0 :(得分:31)
除了您正在点击的网址外,您的浏览器可能还会尝试获取favicon.ico。尝试在命令行上执行命令:curl http://127.0.0.1:27182/
此外,您还可以为request.url
添加日志记录。这将显示您正在请求的网址。
答案 1 :(得分:0)
这是了解问题的另一种方法。此节点服务器将跟踪所有请求并在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);
,请参阅此副本