node.js - 为什么我不能在 'localhost' 上收听但我可以在 '127.0.0.1' 上收听?

标签 node.js localhost config webmin virtualmin

我很难理解为什么以下代码行在 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/

相关文章:

php - CMS 配置 - MySQL 还是 XML?

node.js - 使用 pg-promise 插入多条记录

node.js - nodemailer 出现 EHOSTUNREACH 错误

javascript - 在 Mocha 中使用 async/await - 测试挂起或以未处理的 promise 拒绝结束

php - localhost/test.php 什么都不返回

java - 使用 docker 启动 quarkus 时,错误 OIDC 服务器在 'quarkus.oidc.auth-server-url' URL 不可用

node.js - 需要帮助了解 gulp 和 webpack-stream 的工作原理

ubuntu - Apache 只能从 localhost 获得

ruby-on-rails - 弃用警告中的 Ruby 版本错误

nginx - 拒绝在 nginx 中针对特定 url 运行脚本