使用Mongoose连接MongoDB时出现querySrv ETIMEOUT错误
Mongoose连接MongoDB出现ETIMEOUT错误排查
问题代码
mongoose .connect(process.env.MONGODB_URL) .then(() => { console.log("connected to MongoDB!"); }) .catch((err) => { console.log(err); });
实际报错信息
[nodemon] restarting due to changes... [nodemon] starting `node app.js` server started by me /subscribers Error: querySrv ETIMEOUT _mongodb._tcp.subscribers-app.nrro0mj.mongodb.net at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:251:17) { errno: undefined, code: 'ETIMEOUT', syscall: 'querySrv', hostname: '_mongodb._tcp.subscribers-app.nrro0mj.mongodb.net' }
排查与解决步骤
- 检查网络连通性:当前网络可能无法解析MongoDB的SRV域名,尝试切换网络(如手机热点),或直接ping报错中的
_mongodb._tcp.subscribers-app.nrro0mj.mongodb.net确认是否能正常解析。 - 验证连接字符串:确保
process.env.MONGODB_URL中的连接字符串完全正确,尤其是MongoDB Atlas提供的SRV格式字符串,仔细检查主机名、用户名、密码、数据库名是否存在拼写错误。 - 切换至非SRV连接格式:若SRV解析持续失败,改用标准连接字符串(前缀为
mongodb://而非mongodb+srv://),手动指定端口和集群节点地址,该格式可从MongoDB Atlas控制台直接获取。 - 检查防火墙与代理:本地防火墙或代理可能拦截了DNS查询请求,可暂时关闭防火墙测试,或配置代理规则允许访问MongoDB相关端口(默认27017)。
- 确认Atlas IP白名单:登录MongoDB Atlas控制台,将当前机器的公网IP加入IP白名单,测试阶段可临时设置为允许所有IP访问(生产环境需严格限制IP范围)。
内容的提问来源于stack exchange,提问作者Djaaffer AITHELLAL
相关产品推荐
相关产品推荐

