Node.js应用连接MongoDB Atlas时出现'querySrv ECONNREFUSED'错误的解决方法咨询
Node.js应用连接MongoDB Atlas时出现'querySrv ECONNREFUSED'错误的解决方法咨询
看起来你在连接MongoDB Atlas时碰到了DNS解析相关的连接拒绝问题,我之前做项目也踩过类似的坑,给你整理几个排查和解决的思路,你可以一步步试试:
检查MongoDB Atlas的基础配置
- 先确认你的IP地址已经添加到Atlas的IP白名单里,要是拿不准,临时把白名单改成
0.0.0.0/0(允许所有IP访问)测试一下,排除白名单拦截的问题,测试完记得改回你的真实IP,保证安全。 - 去Atlas控制台看看集群状态,是不是正常运行中,有没有处于维护或者未就绪的状态。
- 先确认你的IP地址已经添加到Atlas的IP白名单里,要是拿不准,临时把白名单改成
解决DNS SRV解析失败的核心问题
- 你提到尝试限制IPv4,其实更直接的方法是改用非SRV格式的连接字符串。去Atlas控制台重新生成连接字符串,选择“不使用SRV记录”的选项,这种字符串是直接用IP+端口的形式,不会依赖DNS的SRV查询,能绕过很多解析问题。
- 可以在本地终端测试DNS解析是否正常,执行命令:
或者nslookup _mongodb._tcp.waygood.tlzyl.mongodb.net
如果返回的是空或者错误,那就是本地DNS的问题,试试切换到公共DNS(比如8.8.8.8)再测试。dig _mongodb._tcp.waygood.tlzyl.mongodb.net SRV
优化Mongoose连接配置
- 你已经加了
serverSelectionTimeoutMS,可以补充完整配置,强制使用IPv4的话,family: 4这个配置项是关键,完整代码示例:await mongoose.connect(uri, { serverSelectionTimeoutMS: 5000, socketTimeoutMS: 45000, family: 4, // 强制启用IPv4连接 retryWrites: true, w: 'majority' }); - 一定要确认连接字符串
uri的正确性,尤其是切换非SRV格式后,检查用户名、密码、集群地址有没有拼写错误,密码里如果有特殊字符(比如@、&)要记得转义。
- 你已经加了
排查本地网络环境
- 如果你在公司、校园这类受限网络下,大概率是防火墙或者代理拦截了DNS查询或者MongoDB的27017端口,试试切换到手机热点再连接,看能不能成功。
- 确认你的Node.js版本是不是符合要求,过旧的版本可能和MongoDB驱动不兼容,建议用LTS版本(比如16.x、18.x系列)。
要是你试了这些步骤还有问题,可以把DNS测试的结果、切换网络后的情况告诉我,我再帮你进一步排查~




