Mongoose连接MongoDB Atlas遇EREFUSED错误,求解决方法
解决Mongoose连接MongoDB Atlas时的queryTxt EREFUSED错误
问题场景
开发MERN栈项目时,使用Mongoose连接MongoDB Atlas遇到问题,已将IP地址设置为允许任意地址访问,排除IP白名单问题。
连接代码片段
import { connect, disconnect } from "mongoose"; async function connectToDatabase() { try { await connect(process.env.MONGO_URL); } catch (error) { console.log(error); throw new Error("Could not connect to MongoDb"); } } async function disconnectFromDatabase() { try { await disconnect(); } catch (error) { console.log(error); throw new Error("could not disconnect from Mongo"); } } export { connectToDatabase, disconnectFromDatabase };
报错信息
Error: queryTxt EREFUSED cluster1.wcblrfc.mongodb.net at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:275:17) { errno: undefined, code: 'EREFUSED', syscall: 'queryTxt', hostname: 'cluster1.wcblrfc.mongodb.net' } Error: Could not connect to MongoDb
错误原因
queryTxt EREFUSED本质是DNS解析失败,域名服务器拒绝解析Atlas集群的主机名,和IP白名单无关,核心问题出在连接字符串、网络DNS配置或网络拦截上。
解决步骤
- 校验连接字符串准确性
确认process.env.MONGO_URL中的连接字符串是从Atlas控制台复制的完整正确版本:- 登录Atlas控制台进入目标集群,点击「Connect」→「Connect your application」
- 选择对应Node.js驱动版本(如4.0+)
- 替换字符串中的
<password>为数据库用户的真实密码,确保mongodb+srv://前缀完整无遗漏
- 切换公共DNS服务器
本地DNS可能无法解析Atlas域名,尝试切换到公共DNS:- Windows:网络设置中修改DNS为
8.8.8.8或1.1.1.1 - macOS:系统设置→网络→高级→DNS,添加上述公共DNS地址
- Linux:修改
/etc/resolv.conf,添加nameserver 8.8.8.8
- Windows:网络设置中修改DNS为
- 排查网络拦截
关闭本地防火墙、代理或VPN,确认网络允许UDP 53端口的DNS出站请求 - 验证环境变量加载
在连接函数前添加console.log(process.env.MONGO_URL),确认环境变量已正确读取,无空值或拼写错误
内容的提问来源于stack exchange,提问作者Codaswin
相关产品推荐
相关产品推荐

