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

部署Node.js+MongoDB应用至Heroku时遭遇ENOTFOUND错误

解决Node.js连接MongoDB时的querySrv ENOTFOUND错误

错误信息

ErrorCaptureStackTrace(err);

Error: querySrv ENOTFOUND _mongodb._tcp.cluster0-qqlqa.mongodb.net
at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/callback_resolver:47:19) {
errno: undefined,
code: 'ENOTFOUND',
syscall: 'querySrv',
hostname: '_mongodb._tcp.cluster0-qqlqa.mongodb.net'
}

排查与解决步骤

  • 验证DNS解析能力
    在终端执行nslookup _mongodb._tcp.cluster0-qqlqa.mongodb.net或dig _mongodb._tcp.cluster0-qqlqa.mongodb.net SRV,若返回无结果,说明本地DNS无法解析MongoDB Atlas的SRV记录。可切换公共DNS(如1.1.1.1或8.8.8.8)后重试。

  • 替换为标准连接字符串
    若DNS始终无法解析SRV记录,将MongoDB连接字符串从mongodb+srv://...格式切换为标准非SRV格式:

    1. 登录MongoDB Atlas控制台,进入目标集群的连接选项
    2. 选择「Connect your application」,切换到「Standard connection string」格式
    3. 复制生成的mongodb://...字符串,替换代码中的连接地址,确保填写正确的用户名、密码和数据库名
  • 检查Atlas IP白名单设置
    后续解析正常仍报错时,确认Atlas控制台的IP白名单包含当前服务器的公网IP,测试阶段可临时设置为0.0.0.0/0(生产环境需限制具体IP范围)

  • 配置网络代理(若适用)
    若服务器使用代理,需确保Node.js进程能访问外部DNS服务,可在代码中添加代理配置:

    process.env.HTTP_PROXY = 'http://your-proxy:port';
    process.env.HTTPS_PROXY = 'http://your-proxy:port';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:34:55