MongoDB Atlas连接报错querySrv EREFUSED问题排查求助
MongoDB Atlas连接报错:Error: querySrv EREFUSED 问题排查
问题描述
我尝试过重新配置项目、新建MongoDB Atlas集群等操作,但始终无法解决连接报错:Error: querySrv EREFUSED _mongodb._tcp.cluster0.vzygb.mongodb.net。请问该问题是源于MongoDB Atlas配置不当还是其他原因?
相关代码
const path = require("path"); const express = require("express"); const bodyParser = require("body-parser"); const mongoose = require("mongoose"); const errorController = require("./controllers/error"); const User = require("./models/user"); const app = express(); app.set("view engine", "ejs"); app.set("views", "views"); const adminRoutes = require("./routes/admin"); const shopRoutes = require("./routes/shop"); const authRoutes = require("./routes/auth"); app.use(bodyParser.urlencoded({ extended: false })); app.use(express.static(path.join(__dirname, "public"))); app.use((req, res, next) => { User.findById("66c82709c6db121f94dd0d57") .then((user) => { req.user = user; next(); }) .catch((err) => console.log(err)); }); app.use("/admin", adminRoutes); app.use(shopRoutes); app.use(authRoutes); app.use(errorController.get404); mongoose .connect( "mongodb+srv://vishalaggarwal_:Vishalrockk1@cluster0.vzygb.mongodb.net/", { useNewUrlParser: true, useUnifiedTopology: true } ) .then((result) => { User.findOne().then((user) => { if (!user) { const user = new User({ name: "Max", email: "max@test.com", cart: { items: [], }, }); user.save(); } }); app.listen(3000); }) .catch((err) => { console.log(err); });
报错详情
Error: querySrv EREFUSED _mongodb._tcp.cluster0.vzygb.mongodb.net at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/callback_resolver:45:19) syscall: 'querySrv', hostname: '_mongodb._tcp.cluster0.vzygb.mongodb.net' }
问题排查与解决方向
- DNS解析故障:
querySrv错误核心是本地DNS无法解析Atlas的SRV记录。可以尝试切换公共DNS(如8.8.8.8),或者检查当前网络是否允许SRV类型的DNS查询。 - Atlas网络配置问题:
- 确认集群IP白名单包含你的公网IP,测试环境可临时设置为
0.0.0.0/0允许所有IP访问。 - 登录Atlas控制台查看集群状态,确认集群处于正常运行状态。
- 确认集群IP白名单包含你的公网IP,测试环境可临时设置为
- 连接字符串有效性:
- 核对连接字符串中的用户名、密码是否正确,密码含特殊字符需做URL编码。
- 尝试使用非SRV格式的连接字符串(Atlas控制台可切换生成),绕过SRV解析步骤。
- 依赖版本兼容性:检查mongoose版本是否过旧,不支持SRV连接格式。升级mongoose到最新稳定版,并确保Node.js版本符合其要求。
- 网络限制:排查当前网络的防火墙、代理是否阻止了MongoDB端口(27017)的访问,或拦截了DNS的SRV查询请求。
内容的提问来源于stack exchange,提问作者Vishal Aggarwal
相关产品推荐
相关产品推荐

