Bre*_*eal 13 javascript node.js express
按照标准的ExpressJs hello word示例,我得到一个':::'的主机.
为什么会这样?
你好的例子:
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
Run Code Online (Sandbox Code Playgroud)
我找到了一个在port参数后添加'localhost'的提示.当我只看我的电脑时,它解决了,但它无法通过网络工作.我该怎么办?
对于代码
var server = app.listen(3000, function () {
Run Code Online (Sandbox Code Playgroud)
如果listen函数中没有地址参数,Node会将其绑定到任何与0.0.0.0IPV4 地址相关的地址,并对应::于IPV6.而这个IPv6未指明的地址,0:0:0:0:0:0:0:0减少到::,
跑完之后 netstat -a
TCP [::]:3000 CP-Q10001:0 LISTENING
Run Code Online (Sandbox Code Playgroud)
我们知道节点服务器::用端口监听地址3000.
请参阅http.listen该express.js应用在这里
app.listen = function listen() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Run Code Online (Sandbox Code Playgroud)
如果省略主机名,则服务器将在IPv6可用时接受任何IPv6地址(::)上的连接,否则接受任何IPv4地址(0.0.0.0).
小智 7
我尝试了这个例子并为主机名'::'提供了相同的输出,我做了以下更改作为解决方法:
var server = app.listen(3000, 'localhost', function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
Run Code Online (Sandbox Code Playgroud)
输出:
示例app在http://127.0.0.1:3000上收听