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

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控制台查看集群状态,确认集群处于正常运行状态。
  • 连接字符串有效性:
    • 核对连接字符串中的用户名、密码是否正确,密码含特殊字符需做URL编码。
    • 尝试使用非SRV格式的连接字符串(Atlas控制台可切换生成),绕过SRV解析步骤。
  • 依赖版本兼容性:检查mongoose版本是否过旧,不支持SRV连接格式。升级mongoose到最新稳定版,并确保Node.js版本符合其要求。
  • 网络限制:排查当前网络的防火墙、代理是否阻止了MongoDB端口(27017)的访问,或拦截了DNS的SRV查询请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:53:23