7

我很难理解为什么以下代码行在 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不起作用?

4

3 回答 3

4

你在使用cygwin构建吗?您是否尝试过“设置域名解析 (DNS)”

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

$ vim /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4
于 2011-07-24T14:16:54.693 回答
3

事实证明,使用 cygwin 构建是问题所在。

I looked at http://nodejs.org/ and I discovered that only recently a native Windows binary file was made available, which works like a charm.

于 2011-07-26T20:13:18.683 回答
1

我从来没有亲自使用过node.js,但是一些快速搜索发现了一些有趣的结果......

据我所知,我所看到的一切都表明您需要找到您想要收听的 IP 地址。这是一个示例:在 node.js 中获取本地 IP 地址这种行为也很有意义。域名是任意的,重要的是 IP,所以有时这就是所有想要处理的东西。

如果我遗漏了有关 node.js 如何工作的信息,我很抱歉。

于 2011-07-24T12:53:21.367 回答