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

如何解决Prisma连接MongoDB Atlas的网络不可达错误?

解决Prisma连接MongoDB Atlas的网络错误及相关问题

一、解决防火墙导致的连接错误(os error 10051)

  • 排查本地防火墙:检查Windows Defender防火墙、第三方杀毒软件的防火墙规则,确认是否拦截了Node.js进程的网络出站请求,或是拦截了MongoDB Atlas的IP/端口
  • 临时验证:关闭防火墙后重新运行npm start并调用model.count(),如果恢复正常,说明是防火墙拦截问题,需添加放行规则:
    • 直接放行你的Node.js项目进程的网络访问权限
    • 或者放行MongoDB Atlas对应的IP段和默认端口27017
  • 检查代理设置:如果网络使用了代理,确认HTTP_PROXY/HTTPS_PROXY等环境变量配置正确,或临时关闭代理测试

二、Prisma使用的端口号

Prisma本身没有固定专属端口,完全依赖你配置的数据库连接字符串中的端口:

  • 对于MongoDB Atlas,默认连接端口是27017
  • 查看连接配置:打开prisma/schema.prisma,找到datasource块中url指向的环境变量(比如DATABASE_URL),如果是srv格式的连接字符串(mongodb+srv://...),会自动解析Atlas的端口,默认仍为27017;如果是普通连接字符串,会明确标注端口(比如mongodb://...:27017/...)

三、MongoDB Atlas的IP地址获取方法

  • 命令行解析:
    • Windows:打开命令提示符,执行nslookup -type=SRV _mongodb._tcp.你的集群名.mongodb.net,得到集群主机名后,再执行nslookup 主机名获取对应IP
    • Linux/macOS:执行dig _mongodb._tcp.你的集群名.mongodb.net SRV,再对返回的主机名执行dig 主机名 A得到IP
  • Atlas控制台查看:
    登录MongoDB Atlas控制台,进入目标集群的「Network Access」页面,点击「Add IP Address」,页面会显示当前集群的入口IP段;或是进入「Connect」页面,查看连接字符串中的主机名后手动解析为IP
  • Node.js代码临时解析:
    const dns = require('dns');
    // 替换成你的集群SRV地址
    const clusterSrv = '_mongodb._tcp.cluster0.mongodb.net';
    dns.resolveSrv(clusterSrv, (err, addresses) => {
      if (err) throw err;
      addresses.forEach(addr => {
        dns.resolve4(addr.name, (err, ips) => {
          if (err) throw err;
          console.log(`${addr.name} 对应的IP: ${ips.join(', ')}`);
        });
      });
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:01:02