Windows环境下Node.js驱动连接本地MongoDB副本集失败求助
解决MongoDB副本集Node.js驱动连接ECONNREFUSED错误
错误核心分析
你遇到的MongoServerSelectionError: connect ECONNREFUSED ::1:21017错误,关键在于驱动尝试连接21017端口,但你实际配置的MongoDB端口是27017。这说明副本集成员的端口配置有误,或者驱动解析副本集节点时获取了错误的地址。
具体解决方案
1. 检查并修正副本集成员配置
登录MongoDB Shell:
mongo mongodb://localhost:27017
执行命令查看副本集配置:
rs.conf()
重点查看members数组中的host字段,确认节点地址是否为localhost:27017。如果显示为localhost:21017,执行以下命令修正:
var cfg = rs.conf(); cfg.members[0].host = "localhost:27017"; // 对应你要修改的成员索引 rs.reconfig(cfg);
2. 调整连接URL参数
- 强制直连副本集节点:在连接URL中添加
directConnection=true,绕过驱动自动发现的节点列表:await MongoClient.connect("mongodb://localhost:27017/?replicaSet=rs0&directConnection=true"); - 避免IPv6解析问题:将
localhost替换为127.0.0.1,防止驱动优先解析IPv6地址导致端口错误:await MongoClient.connect("mongodb://127.0.0.1:27017/?replicaSet=rs0");
3. 验证MongoDB监听端口
确认MongoDB实例确实在27017端口运行:
- Windows系统:
netstat -ano | findstr :27017 - Linux/Mac系统:
lsof -i :27017
如果没有结果,说明MongoDB未在27017端口启动,检查启动命令的端口参数。
4. 适配Node.js驱动版本
若以上方法无效,可能是驱动与MongoDB版本不兼容,尝试升级或降级驱动:
# 升级到最新稳定版 npm install mongodb@latest # 或降级到兼容版本(如4.x系列) npm install mongodb@4.17.0
内容的提问来源于stack exchange,提问作者MarcS82
相关产品推荐
相关产品推荐

