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

求助:使用Mongoose连接MongoDB Atlas集群出现连接失败错误

连接MongoDB Atlas到Node.js项目时的Mongoose连接问题

错误信息

MongoDB connection error: MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your Atlas cluster's IP whitelist.

.env文件内容

MONGO_URI=mongodb+srv://furkanguezel:furkan123@fga-cluster.ffbwprf.mongodb.net/SmartPlan?retryWrites=true&w=majority&appName=FGA-Cluster

server.js代码片段

mongoose.connect(process.env.MONGO_URI)
    .then(() => console.log('MongoDB connected successfully'))
    .catch(err => {
        console.error('MongoDB connection error:', err);
    });

已采取的排查步骤

  • 已将当前IP和0.0.0.0(允许所有IP)添加到MongoDB Atlas的IP白名单;
  • 相同配置的连接字符串在另一项目可正常使用;
  • 检查MongoDB网络访问设置无异常;
  • 测试免费和付费集群均出现问题,但同一集群在其他项目可正常连接。

环境与依赖版本

  • Node.js版本:v18.15.0
  • Mongoose版本:mongoose@8.7.2

依赖包信息:

"dependencies": {
  "dotenv": "^16.4.5",
  "express": "^4.21.1",
  "mongodb": "^6.9.0",
  "mongoose": "^8.7.2"
}

可能的原因及解决方向

  • dotenv未正确加载:确认在mongoose连接代码前调用了require('dotenv').config(),否则环境变量无法被读取,导致连接字符串失效。
  • 连接字符串转义错误:.env文件中的&是HTML转义字符,需替换为&,否则MongoDB无法正确解析连接参数。
  • 依赖缓存或冲突:删除node_modules和package-lock.json文件,重新执行npm install,清除可能存在的依赖版本冲突或缓存问题。
  • 本地网络限制:检查本地防火墙、杀毒软件或代理是否拦截了MongoDB的27017端口,尝试临时关闭防火墙或配置代理参数到Mongoose连接选项中。
  • Mongoose连接选项缺失:添加超时配置或显式指定数据库参数,例如:
    mongoose.connect(process.env.MONGO_URI, {
      serverSelectionTimeoutMS: 10000, // 延长超时时间
      dbName: 'SmartPlan'
    })
    
  • 环境变量被覆盖:在连接前打印console.log(process.env.MONGO_URI),确认输出的连接字符串与.env中的一致,避免系统环境变量或其他配置覆盖了该值。
  • 数据库权限问题:检查Atlas中当前数据库用户是否拥有SmartPlan数据库的读写权限,虽然其他项目可用,但不排除当前用户权限被调整的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:26:19