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

如何修复MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017错误

解决MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017问题

针对你运行Node.js服务器一段时间后崩溃、无法连接MongoDB的问题,以下是逐步排查和解决方法:

1. 确认MongoDB服务是否持续运行

  • 检查MongoDB进程状态:
    • Windows:打开命令提示符执行 tasklist | findstr mongod,查看是否有mongod进程
    • macOS/Linux:终端执行 ps aux | grep mongod,确认进程存在且未中途退出
  • 重启MongoDB服务:
    • Windows:打开「服务」面板,找到MongoDB服务右键重启
    • macOS:brew services restart mongodb-community(通过Homebrew安装的情况)
    • Linux:sudo systemctl restart mongod
  • 查看MongoDB日志(默认路径为/data/db/mongod.log或配置文件指定路径),检查是否有服务崩溃的原因(比如磁盘空间不足、权限错误)

2. 优化Mongoose连接配置,提升稳定性

确保连接字符串正确,同时添加重连机制避免单次连接失败导致服务器崩溃:

const mongoose = require('mongoose');
const dbURL = 'mongodb://127.0.0.1:27017/your_database_name'; // 替换为你的数据库名

// 配置连接参数
mongoose.connect(dbURL, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  autoReconnect: true,
  reconnectTries: Number.MAX_VALUE, // 无限重试
  reconnectInterval: 1000 // 每秒重试一次
});

// 监听连接错误
mongoose.connection.on('error', err => {
  console.error('MongoDB连接异常:', err);
});

// 监听断开重连事件
mongoose.connection.on('disconnected', () => {
  console.log('MongoDB连接断开,正在尝试重连...');
  mongoose.connect(dbURL);
});

如果是跟随视频学习,对比视频中的连接配置,注意Mongoose版本差异导致的参数变化(比如旧版本的useCreateIndex等参数)

3. 排查端口占用与防火墙限制

  • 检查27017端口是否被其他程序占用:
    • Windows:netstat -ano | findstr :27017,若有其他进程占用,通过任务管理器杀掉对应PID的进程
    • macOS/Linux:lsof -i :27017,执行kill -9 <PID>杀掉占用进程
  • 临时关闭本地防火墙,测试是否能正常连接,排除防火墙阻止端口的可能

4. 检查MongoDB数据目录权限

  • macOS/Linux:确保默认数据目录/data/db有正确权限,执行sudo chown -R mongodb:mongodb /data/db
  • Windows:确认MongoDB数据目录(比如C:\data\db)有读写权限,避免因权限不足导致服务崩溃

如果以上方法仍无效,请补充以下信息以便进一步排查:

  • 完整的错误堆栈日志
  • 你的Mongoose连接代码片段
  • MongoDB和Mongoose的具体版本
  • 本地操作系统类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:55:19