我正在学习使用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 '
任何人都可以解释这意味着什么 感谢
答案 0 :(得分:2)
请参阅net.Server::address()
上的文档。
它可能不会说localhost
,因为您没有指定您正在侦听的地址。
默认情况下,没有特定地址,因为它将接受端口上的传入请求,无论它发送到哪个地址。
它可以接受的各种地址的示例包括localhost
,127.0.0.1
,192.168.1.72
,或者如果您通过网络转发服务器,它可能是您的全球IP地址。如果您明确指定了地址,它将拒绝来自所有其他地址的传入请求。
答案 1 :(得分:-2)
听起来像是异步执行代码的危险。您正在定义主机和端口,并立即在控制台日志语句中调用它们。 NodeJS在初始化之前执行日志语句。尝试在app.listen函数外部打印日志语句。