Mac环境下Node.js连接RabbitMQ遇ECONNREFUSED ::1:5672错误求助
问题重现
运行send.js时触发错误:
Error: connect ECONNREFUSED ::1:5672
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1284:16) {
errno: -61,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '::1',
port: 5672
}
已完成brew安装、启动服务、安装amqplib,服务状态显示正常,但仍无法连接。
排查与解决步骤
强制使用IPv4连接
你的代码可能默认用localhost连接,而系统将localhost解析为IPv6地址::1,但RabbitMQ可能未开启IPv6监听。修改连接字符串为:const connection = await amqp.connect('amqp://127.0.0.1');替换原来的
amqp://localhost,再重新运行send.js。检查RabbitMQ端口监听情况
执行以下命令查看5672端口的监听状态:lsof -i :5672如果输出中只有
0.0.0.0:5672(IPv4),没有::1:5672(IPv6),说明RabbitMQ未监听IPv6。配置RabbitMQ开启IPv6监听
- 找到brew安装的RabbitMQ配置文件,路径通常为
/usr/local/etc/rabbitmq/rabbitmq.conf - 添加或修改以下配置项:
listeners.tcp.default = ::5672 - 重启RabbitMQ服务:
brew services restart rabbitmq
再次用
lsof -i :5672确认已监听::1:5672。- 找到brew安装的RabbitMQ配置文件,路径通常为
验证RabbitMQ管理界面
访问http://localhost:15672,用默认账号guest/guest登录,确认服务正常运行,能看到连接统计信息。排查本地防火墙/安全软件
部分防火墙或安全软件可能拦截IPv6本地连接,暂时关闭相关软件后重试,若恢复正常则添加对应允许规则。
内容的提问来源于stack exchange,提问作者Sankalp Patil

