Mongoose连接报MongooseServerSelectionError: connect ECONNREFUSED ::1:27017无法解决
问题根因
报错中connect ECONNREFUSED ::1:27017明确指向连接失败的核心原因:Node.js 域名解析时会优先将localhost映射为IPv6地址::1,但默认安装的MongoDB服务仅监听IPv4的127.0.0.1地址,因此连接请求被拒绝。你本地shell可以正常操作MongoDB,是因为MongoDB自带的shell客户端默认优先使用IPv4协议解析localhost,才会出现两端连接状态不一致的情况。
解决方案(按生效效率排序)
- 方案1:直接替换连接地址(最快生效)
修改./other/DB/mong文件中的MongoDB连接串,将localhost替换为IPv4格式的本地回环地址127.0.0.1:
var mongoose = require("mongoose"); module.exports = async () => { await mongoose.connect('mongodb://127.0.0.1:27017/MX', { keepAlive: true, useNewUrlParser: true, useUnifiedTopology: true }); return mongoose; }
- 方案2:修改MongoDB监听配置(保留localhost解析)
打开MongoDB配置文件(Windows默认路径为C:\Program Files\MongoDB\Server\<你的版本号>\bin\mongod.cfg),找到net配置段下的bindIp配置,修改为同时监听IPv4和IPv6本地地址:
net: port: 27017 bindIp: 127.0.0.1,::1
修改完成后重启MongoDB服务即可。
- 方案3:强制Mongoose使用IPv4协议解析域名
在连接配置中新增family: 4参数,强制Node.js用IPv4协议解析localhost:
await mongoose.connect('mongodb://localhost:27017/MX', { keepAlive: true, useNewUrlParser: true, useUnifiedTopology: true, family: 4 });
内容的提问来源于stack exchange,提问作者8adc894b-1571-4735-8319-85c01d
相关产品推荐
相关产品推荐

