MongoDB本地连接失败:MongooseServerSelectionError排查与解决
升级Node.js至v18.16.1后本地MongoDB连接异常的解决方案
升级Node.js到v18.16.1并完成MongoDB Atlas集群测试后,出现本地MongoDB连接失败的异常:代码可正常连接Atlas集群,但无法连接本地实例,报错信息包括MongooseServerSelectionError: connect ECONNREFUSED ::1:27017、操作缓冲超时等。尝试删除重装依赖、卸载重装MongoDB、重启服务及系统等操作均无效。
问题定位
核心原因是Node.js v18+版本中localhost默认解析为IPv6地址(::1),但本地MongoDB仅运行在IPv4环境下,导致连接请求被拒绝。
可行解决方案
- 强制连接使用IPv4:在
mongoose.connect的配置选项中添加{family: 4}参数,强制指定使用IPv4协议。示例代码:mongoose.connect('mongodb://localhost:27017/your-database', { family: 4 }); - 开启MongoDB的IPv6支持:在终端执行命令
mongod --ipv6,启动MongoDB时启用IPv6监听,使其能响应IPv6地址的连接请求。 - 替换连接地址为IPv4本地地址:将连接字符串中的
localhost替换为IPv4回环地址127.0.0.1,示例:mongoose.connect('mongodb://127.0.0.1:27017/your-database'); - 降级Node.js版本:将Node.js降级至v16版本,该版本中
localhost默认解析为IPv4地址,可恢复原有连接逻辑。
内容的提问来源于stack exchange,提问作者Pratham Jaiswal
相关产品推荐
相关产品推荐

