使用Mongoose连接MongoDB报错connect ECONNREFUSED 127.0.0.1:27017怎么办?
问题排查与解决方案
核心报错本质:
MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017代表本地27017端口没有运行的MongoDB服务,Mongoose无法建立连接,此前更换端口、删除数据库文件的操作未解决服务未正常启动的核心问题。后续的UnhandledPromiseRejectionWarning是代码中没有对Mongoose连接的异步异常做捕获导致的。
1. 启动MongoDB服务
根据你使用的操作系统执行对应操作,确认MongoDB服务正常运行:
- Windows系统:打开服务管理器,找到MongoDB对应服务,右键选择「启动」,确认服务状态变为「正在运行」
- macOS系统:如果是Homebrew安装的MongoDB,终端执行
brew services start mongodb-community;也可以直接执行mongod命令手动启动服务 - Linux系统:终端执行
sudo systemctl start mongod,如果启动失败可执行sudo systemctl status mongod查看具体报错原因
2. 验证端口连通性
服务启动后,终端执行 mongosh (旧版本MongoDB用 mongo 命令),如果能正常进入MongoDB交互终端,说明27017端口已正常监听,连接条件已满足。
3. 修复代码异常捕获逻辑
调整你的Mongoose连接代码,增加异常捕获逻辑,避免未处理的Promise rejection警告,参考写法如下:
const mongoose = require('mongoose'); // 数据库连接方法 const connectMongoDB = async () => { try { // 替换为你实际的数据库连接地址、库名 await mongoose.connect('mongodb://127.0.0.1:27017/my_database'); console.log('MongoDB 连接成功'); } catch (error) { console.error('MongoDB 连接失败:', error.message); // 可根据业务需要增加重试逻辑,或者直接退出进程 process.exit(1); } } // 调用连接方法 connectMongoDB();
如果你的MongoDB配置了自定义端口、身份认证,或者使用的是远程MongoDB实例,替换mongoose.connect方法中的连接字符串为实际地址即可。
内容的提问来源于stack exchange,提问作者Piyush Jangid
相关产品推荐
相关产品推荐

