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

通过Next.js和Mongoose连接Mongo Atlas时遇querySrv ETIMEOUT错误

解决Next.js + Mongoose连接Mongo Atlas时的querySrv ETIMEOUT错误

错误信息

Error: querySrv ETIMEOUT _mongodb._tcp.cluster0.ghjqqbt.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:251:17)
    at QueryReqWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
  errno: undefined,
  code: 'ETIMEOUT',
  syscall: 'querySrv',
  hostname: '_mongodb._tcp.cluster0.ghjqqbt.mongodb.net'
}

问题说明

使用Next.js和Mongoose连接Mongo Atlas数据库时出现上述DNS查询超时错误,无法建立数据库连接。

排查与解决步骤

  • 检查网络与防火墙限制

    1. 测试本地网络是否能访问Mongo Atlas服务器:执行ping cluster0.ghjqqbt.mongodb.net,如果无响应,大概率是本地网络、ISP屏蔽了Mongo相关端口,或者VPN/代理工具拦截了请求,尝试关闭这类工具再测试。
    2. 临时关闭本地防火墙,确认是否是防火墙拦截了DNS查询或Mongo连接请求。
  • 验证Mongo Atlas IP白名单

    1. 登录Mongo Atlas控制台,进入目标集群的「Network Access」页面。
    2. 确认当前机器的公网IP已加入白名单,可临时添加0.0.0.0/0(仅测试用,生产环境禁用),测试是否能正常连接。
  • 切换非SRV格式连接字符串
    DNS SRV查询失败时,改用标准连接字符串:

    1. 在Mongo Atlas控制台「Connect」→「Connect your application」中,选择Node.js版本,取消勾选「Include full driver compatibility?」,生成不带SRV的连接字符串。
    2. 将新字符串替换到项目的环境变量中,重启项目测试。
  • 检查Mongoose配置与版本

    1. 升级Mongoose到最新稳定版,避免版本不兼容问题。
    2. 核对连接代码,确保用户名、密码、数据库名无错误,示例代码参考:
      import mongoose from 'mongoose';
      
      async function connectDB() {
        try {
          await mongoose.connect(process.env.MONGODB_URI);
          console.log('数据库连接成功');
        } catch (error) {
          console.error('连接失败:', error);
        }
      }
      
  • 确认环境变量正确性
    检查.env.local中的MONGODB_URI是否完整复制,无多余空格或字符,若密码含特殊字符需确保已正确转义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:14:57