我很难理解为什么以下代码行在 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
文件中定义的本地主机(我在 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
关于node.js - 为什么我不能在 'localhost' 上收听但我可以在 '127.0.0.1' 上收听?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6806412/