← 中文资源

简体中文版本

Node.js 连接服务时报 ECONNREFUSED

通过确认目标主机与端口是否有进程监听、以及地址解析是否符合预期,诊断 ECONNREFUSED。

阅读英文原文

症状

连接尝试快速失败并报 ECONNREFUSED,这与超时不同:对端明确拒绝,说明数据包到达了某台主机但该端口无人监听。常见于笔记本可用而在容器内失败,因为容器中的 localhost 指向容器自身而非运行数据库的主机。

诊断

用 ss -ltnp 查看端口是否有监听;从同一网络上下文(容器内)再测一次;用 dns.lookup 确认主机名解析的地址。

ss -ltnp | grep :5432

根因

TCP 连接被主动拒绝,因为解析到的地址与端口没有接受者,说明服务未在该处监听,或客户端网络无法到达。

修复

启动或重启服务;绑定到客户端使用的网卡接口;修正主机名使其解析到正确地址;调整容器网络使服务之间可达。

验证

重试连接确认成功,再执行一次真实请求,证明服务确实可用而非仅仅接受套接字。

常见陷阱

盲目增加重试而不修网络或启动顺序,只会延后失败;应先确认监听与路由。