You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Node.js应用连接MongoDB Atlas时出现'querySrv ECONNREFUSED'错误的解决方法咨询

Node.js应用连接MongoDB Atlas时出现'querySrv ECONNREFUSED'错误的解决方法咨询

看起来你在连接MongoDB Atlas时碰到了DNS解析相关的连接拒绝问题,我之前做项目也踩过类似的坑,给你整理几个排查和解决的思路,你可以一步步试试:

  • 检查MongoDB Atlas的基础配置

    • 先确认你的IP地址已经添加到Atlas的IP白名单里,要是拿不准,临时把白名单改成0.0.0.0/0(允许所有IP访问)测试一下,排除白名单拦截的问题,测试完记得改回你的真实IP,保证安全。
    • 去Atlas控制台看看集群状态,是不是正常运行中,有没有处于维护或者未就绪的状态。
  • 解决DNS SRV解析失败的核心问题

    • 你提到尝试限制IPv4,其实更直接的方法是改用非SRV格式的连接字符串。去Atlas控制台重新生成连接字符串,选择“不使用SRV记录”的选项,这种字符串是直接用IP+端口的形式,不会依赖DNS的SRV查询,能绕过很多解析问题。
    • 可以在本地终端测试DNS解析是否正常,执行命令:
      nslookup _mongodb._tcp.waygood.tlzyl.mongodb.net
      
      或者
      dig _mongodb._tcp.waygood.tlzyl.mongodb.net SRV
      
      如果返回的是空或者错误,那就是本地DNS的问题,试试切换到公共DNS(比如8.8.8.8)再测试。
  • 优化Mongoose连接配置

    • 你已经加了serverSelectionTimeoutMS,可以补充完整配置,强制使用IPv4的话,family: 4这个配置项是关键,完整代码示例:
      await mongoose.connect(uri, {
        serverSelectionTimeoutMS: 5000,
        socketTimeoutMS: 45000,
        family: 4, // 强制启用IPv4连接
        retryWrites: true,
        w: 'majority'
      });
      
    • 一定要确认连接字符串uri的正确性,尤其是切换非SRV格式后,检查用户名、密码、集群地址有没有拼写错误,密码里如果有特殊字符(比如@、&)要记得转义。
  • 排查本地网络环境

    • 如果你在公司、校园这类受限网络下,大概率是防火墙或者代理拦截了DNS查询或者MongoDB的27017端口,试试切换到手机热点再连接,看能不能成功。
    • 确认你的Node.js版本是不是符合要求,过旧的版本可能和MongoDB驱动不兼容,建议用LTS版本(比如16.x、18.x系列)。

要是你试了这些步骤还有问题,可以把DNS测试的结果、切换网络后的情况告诉我,我再帮你进一步排查~

火山引擎 最新活动