You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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控制台复制的完整正确版本:
    1. 登录Atlas控制台进入目标集群,点击「Connect」→「Connect your application」
    2. 选择对应Node.js驱动版本(如4.0+)
    3. 替换字符串中的<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
  • 排查网络拦截
    关闭本地防火墙、代理或VPN,确认网络允许UDP 53端口的DNS出站请求
  • 验证环境变量加载
    在连接函数前添加console.log(process.env.MONGO_URL),确认环境变量已正确读取,无空值或拼写错误

内容的提问来源于stack exchange,提问作者Codaswin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:15:08