学习节点快递,为什么控制台不输出'本地主机'?

我正在学习如何使用expression式和节点,我意识到我可能会错过许多基础知识。 下面是启动服务器来提供静态文件的代码,正如我所理解的,控制台应该在启动时输出服务器地址和端口号。

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

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

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

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

默认情况下,没有特定的地址,因为它将接受端口上的传入请求,而不pipe它被发送到的地址。

它可以接受的各种地址的示例是localhost127.0.0.1 ,或者如果通过networking端口转发服务器,则可能是您的全局IP地址。 如果您明确指定地址,则会拒绝来自所有这些其他地址的传入请求。

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