莫名其妙的node.js http抛出连接ECONNREFUSED(IPv6?)

2024-01-11

我正在运行node.js,如下所示:

> http = require('http')
> http.get('http://myhost.local:8080',
    function (res) { console.log("RES" + res) }
  ).on('error', function (e) { console.log("Error:", e) })

> uri = require('url').parse("http://myhost.local:8080")
{ protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'myhost.local:8080',
  port: '8080',
  hostname: 'myhost.local',
  hash: null,
  search: null,
  query: null,
  pathname: '/',
  path: '/',
  href: 'http://myhost.local:8080/' }
> http.get(uri,
    function (res) { console.log("RES" + res) }
  ).on('error', function (e) { console.log("Error:", e) })

隐式和显式解析的 URI 都会引发错误,并且我会得到以下输出:

错误:{ [错误:连接 ECONNREFUSED] 代码:'ECONNREFUSED', errno: 'ECONNREFUSED', 系统调用:'连接'}

主人myhost.local是一个别名localhost in /etc/hosts, being:

127.0.0.1   localhost myhost.local myhost
255.255.255.255 broadcasthost
::1             localhost myhost.local myhost
fe80::1%lo0 localhost myhost.local myhost

EDIT:我几乎尝试了主机文件的所有排列,包括最明显的:

127.0.0.1   localhost 
255.255.255.255 broadcasthost
::1             localhost myhost.local myhost
fe80::1%lo0 localhost

EDIT我还应该提到的是,我现在已经在不止一台 Mac 上尝试过了。

尽管这似乎是一个相当常见的错误,但我没有看到任何有用的解释或解决方法。以下是一些值得注意的相关事实:

  1. Running $ wget http://myhost.local:8080按预期工作,因此这不是防火墙问题。
  2. Running $ telnet myhost.local 8080然后手动 GET'ing url 工作正常,所以这不是一个奇怪的 HTTP 问题。
  3. 我使用 node.js 连接到其他主机没有遇到任何问题,例如http://www.google.com http://www.google.com

我希望有用的系统信息包括:

$ node -v
v0.9.11

$ uname -a
Darwin myhost.local 12.2.1 Darwin Kernel Version 12.2.1:
Thu Oct 18 12:13:47 PDT 2012; root:xnu-2050.20.9~1/RELEASE_X86_64 x86_64

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8.2
BuildVersion:   12C3104

$ sudo  netstat -nalt | grep LISTEN | grep 8080
tcp6       0      0  ::1.8080  *.*    LISTEN

有谁知道这里发生了什么以及可能的修复方法是什么?


我将在这里发布此内容以防其他人遇到问题。

Bert Belder,Node.js 邮件列表:

在您的系统上“myhost.local”解析为三个不同的地址 (127.0.0.1、::1 和 fe80::1)。节点更喜欢 ipv4 而不是 ipv6,因此它会 尝试连接到 127.0.0.1。 127.0.0.1:8080 上没有任何内容监听,所以 connect() 系统调用失败并显示 ECONNREFUSED。节点不会重试 任何其他已解析的 IP - 它只是向您报告错误。 A 简单的解决方案是将“localhost”替换为预期的 目标 IP 地址“::1”。

这种行为是否正确尚有争议,但 是什么导致了它。

Bert

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

莫名其妙的node.js http抛出连接ECONNREFUSED(IPv6?) 的相关文章

随机推荐

  • plot.nn 中的错误:未计算权重

    我在尝试绘制神经网络时收到一条错误消息 我一开始能够正常运行代码 然后就停止了 运行 Neuronet 函数时 我没有收到错误消息 任何帮助 将不胜感激 我预测贷款违约 library neuralnet library plyr Cred
  • __has_trivial_copy 在 clang 和 gcc 中的行为不同。谁是对的?

    std is trivially copyable这两个编译器仍然不支持 至少到 gcc 4 6 为止 但两者都提供 has trivial copy做得很好的指令 除非涉及已删除的复制构造函数 struct A A A const del
  • iOS 为 uiwebview 内容启用 AirPrint

    我对 XCode 和应用程序开发非常陌生 我目前正在 iPad 上的 uiwebviews 中加载基于 Web 的应用程序 当加载某一特定页面时 它会显示一个 pdf 文件 我希望能够使用 AirPrint 打印此 pdf 文件 我正在寻找
  • 在 Visual Studio 中编译单个类/文件

    我只是想知道我们是否可以在 Visual Studio 中编译单个文件 类 我经常只更改一个文件 但最终会编译整个项目 这可能是一个微不足道的案例 但会非常有帮助 我正在使用 Visual Studio 2005 处理 net 2 0 中的
  • MySQL获取两个值之间的随机值

    我有两列连续 min value max value 有没有办法进行如下选择 SELECT RAND min v max v foo 我确实意识到RAND做不同的事情 我最接近的 在帮助下 是 RAND max min min 尽管它会产生
  • 在 Dart Angular 中,如何将函数传递给组件

    我有一个组件 MyComp 我想将一个函数作为参数传递给它 更准确地说 我想做这样的事情 飞镖组件文件 NgComponent selector mycomp publishAs ctrl map const myfunc gt myfun
  • Visual Studio 2008 中的“撤消”功能停止工作

    I ll be coding along in Visual Studio 2008 and eventually I make a mistake I press CTRL Z to undo and NOTHING HAPPENS I
  • Visual Studio 2008 - 添加引用

    当添加 DLL 作为对 ASP Net 项目的引用时 VS2008 会向 bin 目录添加几个文件 如果DLL名为foo dll VS2008会添加foo dll refresh foo pdb和foo xml 我知道foo dll是什么
  • 使用 javascript .replace regex 将数字括在括号中

    我有这个字符串 我试图用括号括住后面的数字数组 位置 和颜色 str Label 3 1 位置 115 234 宽度 126 高度 20 文本 另一个按钮 字体大小 18 颜色 0 0 0 1 我可以使用这个正则表达式来做到这一点 但前提是
  • CSR 是否需要使用匹配的私钥进行签名?

    使用 OpenSSL 生成 CSR 时 您有两个选择 1 生成CSR时生成私钥 2 使用私钥导出公钥并使用公钥创建CSR CSR 是否需要使用匹配的私钥进行签名 以便 CA 对其进行验证 假设 如果我有两个密钥对 PubKey1 PrivK
  • 运行代码时将 Access Report 导出到保存的 PDF 文件的简单 VBA 代码

    我在这里寻找一个非常简单的解决方案 我只是想要一个可以一遍又一遍运行的 vba 脚本 以一遍又一遍地将相同的 Access 报告 随着时间的推移而变化 保存到同一个文件中 我需要每次都使用相同的名称 并且不想提示文件名已经存在 在我的研究中
  • 如何在QToolButton中放置透明背景的png图像

    我想在 QToolButton 中放置一个 png 图像作为背景 但我无法获得按钮中的透明部分 透明部分在我的 QToolButton 中显示为白色 有人能建议如何去除透明的白色部分吗 我猜你的 png 文件有问题 下面的代码 QToolB
  • 无法将频道保存到 PFInstallation (iOS)

    我正在尝试从 PFInstallation 添加 删除通道 但我不断收到相同的错误消息 Terminating app due to uncaught exception NSInternalInconsistencyException r
  • 为什么这个属性没有为函数类定义,但为同一函数类的实例定义? [复制]

    这个问题在这里已经有答案了 我正在查看以下示例MDN https developer mozilla org en US docs Web JavaScript Inheritance and the prototype chain fun
  • FancyBox2 - 标题位于顶部和底部?

    发现了几个类似的问题 但没有这个具体问题的答案 有没有办法在 FancyBox2 模式 弹出窗口的顶部和底部添加标题 我知道如何将标题放置在顶部或底部 但需要在顶部放置标题 在底部放置说明文字 提前感谢大家 您可以修改默认的 fancybo
  • PyInstaller 权限错误(以管理员身份运行)

    我在使用时遇到一些问题py安装程序打包一个项目 我过去曾成功地将它用于更简单的脚本 但我正在尝试打包一个更大的项目 调用多个脚本和模块的 pyqt4 gui 并且收到以下错误 IOError Errno 13 权限被拒绝 C Users u
  • Spring Data Mongodb 的性能问题

    我在 spring data mongodb 上遇到了一个问题 在一种方法中 我请求一个简单的 查找 来检索 1000 个文档 我的春季数据代码在这里 Query myquery query where ipp is ipp and COD
  • 如何获取 php-class 中使用的特征?

    PHP 5 4 中是否有任何函数可以将使用的特征作为数组或类似的 class myClass extends movingThings use bikes tanks construct echo I m using the two tra
  • 在实体框架中手动创建单个表的模型

    Q1 如何为数据库中的单列表手动创建一个极其简单的实体框架模型并对其进行查询 该表如下所示 CREATE TABLE dbo MyTable Value int NOT NULL CONSTRAINT PK MyTable PRIMARY
  • 莫名其妙的node.js http抛出连接ECONNREFUSED(IPv6?)

    我正在运行node js 如下所示 gt http require http gt http get http myhost local 8080 function res console log RES res on error func