我有理解困难,为什么下面的代码行中Node.js的工作原理:为什么我不能在'localhost'上收听,但是我可以在'127.0.0.1'上收听?
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
工作?
你是否检查过你的hosts文件以确保localhost映射没有被覆盖?如果从命令行ping本地主机会发生什么? – shanethehat
@shanethehat:这工作得很好;我的web服务器在'http:// localhost /'也没有任何问题。 – pimvdb
您是否尝试使用“http:// localhost”(添加空格,否则注释会被更改)?我问,因为你说过你尝试过“localhost”,然后在浏览器中用http尝试它。如果您只是在浏览器中输入“localhost”,浏览器会为您提供帮助,并自动为您预先设置http://。 – rf43