为什么我不能在'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文件中定义的本地主机(我在Windows下使用node.js)。

为什么不硬编码localhost工作?

你用cygwin构build? 你尝试了“设置域名parsing(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 

原来,使用cygwin构build是问题。

我看了一下http://nodejs.org/ ,发现只有最近一个本地的Windows二进制文件可用,这就像一个魅力。

我从来没有亲自使用node.js,但是一些快速search出现了一些有趣的结果…

从我所知道的情况来看,我所看到的一切都表明你需要find你正在寻找的IP地址。 下面是一个例子: 在node.js中获取本地IP地址,这个行为也是有意义的。 域名是任意的,有时候重要的IP就是所有需要处理的东西。

如果我错过了node.js的工作方式,我很抱歉。