我正在学习使用表达式和节点在一般情况下,我意识到我可能错过了许多基础知识。下面是启动服务器以提供静态文件的代码,据我所知,控制台应该在启动时输出服务器地址和端口号。
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’
有谁能解释一下这是什么意思吗?谢谢
发布于 2016-07-11 14:55:17
请参阅关于net.Server::address()的文档。
它可能没有提到localhost,因为您没有指定您正在监听的地址。
默认情况下,不存在特定地址,因为无论发送到哪个地址,它都将接受端口上的传入请求。
它可以接受的各种地址的例子有:localhost、127.0.0.1、192.168.1.72,或者如果您通过网络转发服务器,则可能是您的全局IP地址。如果您显式指定一个地址,它将拒绝来自所有其他地址的传入请求。
发布于 2016-07-11 15:00:14
听起来像是异步执行代码的危险。您正在定义主机和端口,并立即在控制台日志语句中调用它们。NodeJS在初始化之前正在执行log语句。尝试在app.listen函数之外打印日志语句。
https://stackoverflow.com/questions/38309843
复制相似问题