nodejs 无法在 Windows 上解析“localhost”

Posted

技术标签:

【中文标题】nodejs 无法在 Windows 上解析“localhost”【英文标题】:nodejs cannot resolve 'localhost' on windows 【发布时间】:2011-10-23 06:29:22 【问题描述】:

以下代码在windows下node.js产生异常:

var Socket = require("net").Socket;

socket = new Socket();
socket.connect(80, "localhost");

这是消息:

    events.js:2083: Uncaught Error: getHostByName ENOTFOUND

当我删除 localhost 时,它工作正常。这可能是什么原因造成的? 我尝试关闭防火墙,但没有效果。

【问题讨论】:

Mongoose Can't Connect Without Internet的可能重复 【参考方案1】:

在我的例子中,添加 Microsoft Loopback Adapter 解决了这个问题。

    单击开始菜单 Orb。在搜索框中键入 hdwwiz,然后单击 hdwwize.exe 程序链接。 现在添加硬件向导应该打开了。 向下滚动列表并选择网络适配器,然后单击下一步。 等待下一个窗口加载,然后单击 Microsoft 并选择 Microsoft Loopback Adapter。

发件人:http://www.groovypost.com/howto/microsoft/install-a-loopback-adapter-in-windows-7/

【讨论】:

【参考方案2】:

node.js 使用 c-ares 解析器并完全忽略系统解析器。所以关于 C:\WINDOWS\system32\drivers\etc\hosts 的建议可能是无关紧要的。

c-ares 库读取某些系统配置文件 - 例如在 Windows 和 Cygwin 上,它读取 /etc/resolv.conf。所以你应该检查它是否读取 /etc/hosts 或 C:\WINDOWS\system32\drivers\etc\hosts。如果它没有并且没有对 localhost 的内置支持 - 那么您将不得不使用 127.0.0.1

【讨论】:

现在还是这样吗,因为 Windows 上的 Node.js 不再使用 Cygwin 了? 并非如此,而是因为与 Cygwin 无关的设计更改:请参阅 nodejs.org/api/dns.html。基本上net.connect 已更改为使用系统解析器而不是 c-ares。【参考方案3】:

选项 1:不要使用窗口 ;)

选项 2: 在 C:\WINDOWS\system32\drivers\etc\hosts

添加:

 127.0.0.1       localhost

【讨论】:

以上是关于nodejs 无法在 Windows 上解析“localhost”的主要内容,如果未能解决你的问题,请参考以下文章

Apache Avro 库无法解析文件 nodejs

nodejs npm 安装平台特定包

Nodejs - Express JSON 解析器无法响应

无法解析在 Windows Phone 上使用非英文键盘输入的十进制数

在 Windows 上构建 C++ 项目时,Tensorflow 2.3 无法解析机器生成的文件中的外部符号

使用 Jenkins 时永远无法启动