Node.js连接MongoDB Atlas集群报EBADNAME错误如何解决
问题描述
使用如下代码连接Node.js应用与MongoDB Atlas免费集群时,连接个人热点运行可正常连通,切换至家庭WiFi执行时终端抛出错误。连接时已将连接串中的username、password替换为真实账号密码,使用MongoDB Compass连接同一集群时复现相同错误,MongoDB Atlas官方技术支持侧测试未定位根因。
const mongoose = require("mongoose"); const express = require("express"); const app = express(); const bodyParser = require("body-parser"); const connectDB = async () => { mongoose.connect( "mongodb+srv://username:password@cluster0.ibx1kue.mongodb.net/?retryWrites=true&w=majority", { useNewUrlParser: true } ); }; connectDB(); app.listen(8080);
错误信息
家庭WiFi环境下Node.js端抛出的错误:
node:internal/errors:464 ErrorCaptureStackTrace(err); ^ Error: queryTxt EBADNAME cluster0.ibx1kue.mongodb.net at QueryReqWrap.onresolve [as oncomplete] (node:dns:213:19) { errno: undefined, code: 'EBADNAME', syscall: 'queryTxt', hostname: 'cluster0.ibx1kue.mongodb.net' }
该错误与常见的Atlas连接超时错误不一致,常见超时错误如下:
Error: queryTxt ETIMEOUT cluster0.ibx1kue.mongodb.net at QueryReqWrap.onresolve [as oncomplete] (node:dns:213:19) { errno: undefined, code: 'ETIMEOUT', syscall: 'queryTxt', hostname: 'cluster0.ibx1kue.mongodb.net' }
MongoDB Compass连接时抛出的错误:
queryTxt EBADNAME cluster0.ibx1kue.mongodb.net
问题根因
EBADNAME错误代表DNS SRV记录查询失败。mongodb+srv://协议建立连接前,会先查询目标域名下的SRV记录获取完整集群节点列表,家庭WiFi使用的运营商DNS存在域名拦截、解析污染、不支持SRV记录查询的问题,会直接导致解析流程失败。个人热点可正常连接,说明账号密码、集群IP白名单、集群运行状态均正常,和集群本身故障无关。
解决方案
按优先级依次尝试以下方案:
- 修改家庭网络的DNS配置:将本机或路由器的默认DNS替换为公共DNS,比如223.5.5.5、223.6.6.6或1.1.1.1,修改完成后刷新本机DNS缓存再重试连接。
- 更换连接串格式跳过SRV解析:将连接串开头的
mongodb+srv://替换为mongodb://,手动补全集群三个分片节点的地址,修改后的连接串格式参考如下:
其中副本集名称参数可在个人热点环境下正常连接时从MongoDB连接日志中获取,也可直接在Atlas控制台选择标准(非SRV)连接格式复制官方生成的对应连接串。mongodb://username:password@cluster0-shard-00-00.ibx1kue.mongodb.net:27017,cluster0-shard-00-01.ibx1kue.mongodb.net:27017,cluster0-shard-00-02.ibx1kue.mongodb.net:27017/?retryWrites=true&w=majority&ssl=true&authSource=admin&replicaSet=对应集群的副本集名称 - 检查路由器安全配置:登录家庭路由器管理后台,关闭DNS劫持、境外域名拦截、广告过滤类的规则,重启路由器后重试。
- 配置本地hosts映射:在可正常连接的热点网络下,查询三个集群节点的真实IP,将IP与域名的映射关系写入本机hosts文件,绕过家庭网络的DNS解析流程。
内容的提问来源于stack exchange,提问作者Chloezhang
相关产品推荐
相关产品推荐

