微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 为什么我不能在’localhost’上听,但是我能听’127.0.0.1’吗?

我很难理解为什么以下代码行在node.js中有效:

server.listen(12345,"127.0.0.1"); // works

但这个不是:

server.listen(12345,"localhost"); // fails

编码localhost字面意思会导致抛出以下错误

events.js:45
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: ECONNREFUSED,Could not contact DNS servers
    at IOWatcher.callback (dns.js:74:15)

我不明白为什么它应该“联系DNS服务器”,因为它是我的HOSTS文件中定义的localhost(我在Windows下使用node.js).

为什么没有硬编码localhost工作?

解决方法

你使用cygwin构建吗?你试过 ‘Set up Domain Name Resolution (DNS)’

Cygwin内部使用Windows进行DNS查询. node.js使用依赖于/etc/resolv.conf的c-ares库. Cygwin附带一个空的/etc/resolv.conf.要从脚本启用网络,请将这些IP添加文件(Google Public DNS):

$vim /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐