学习节点表达,为什么控制台不输出' localhost'?

时间:2016-07-11 14:44:46

标签: node.js express

我正在学习使用express和节点,我意识到我可能缺少许多基础知识。下面是启动服务器提供静态文件的代码,据我所知,控制台应该在启动时输出服务器地址和端口号。

var express = require('express');
var app = express();

app.use(express.static('resources'));
app.use(express.static(__dirname));

app.get('/', function (req, res) {
   res.sendFile( __dirname + "/" + "index.html" );
})

var server = app.listen(3000, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("Server listening at http://%s:%s", host, port)

})

我希望看到'服务器在http://localhost:3000"'但我得到:' 服务器在http://:::3000 '

任何人都可以解释这意味着什么 感谢

2 个答案:

答案 0 :(得分:2)

请参阅net.Server::address()上的文档。

它可能不会说localhost,因为您没有指定您正在侦听的地址。

默认情况下,没有特定地址,因为它将接受端口上的传入请求,无论它发送到哪个地址。

它可以接受的各种地址的示例包括localhost127.0.0.1192.168.1.72,或者如果您通过网络转发服务器,它可能是您的全球IP地址。如果您明确指定了地址,它将拒绝来自所有其他地址的传入请求。

答案 1 :(得分:-2)

听起来像是异步执行代码的危险。您正在定义主机和端口,并立即在控制台日志语句中调用它们。 NodeJS在初始化之前执行日志语句。尝试在app.listen函数外部打印日志语句。