如何解决MongooseServerSelectionError connect ECONNREFUSED 127.0.0.1:27017报错
Windows环境Mongoose连接MongoDB报错ECONNREFUSED解决方案
- 确认MongoDB进程持续运行
你在PowerShell中直接执行mongod命令启动的MongoDB为前台进程,若关闭了运行mongod的PowerShell窗口,或在该窗口执行了中断操作,MongoDB服务会直接停止,导致27017端口无服务响应,抛出ECONNREFUSED错误。
建议将MongoDB安装为Windows系统服务实现后台常驻:- 以管理员权限打开PowerShell
- 执行
mongod --install --serviceName MongoDB --dbpath 你的MongoDB数据存储目录(例如C:\data\db) - 执行
net start MongoDB启动服务,后续服务不会随PowerShell关闭而停止
- 补全Mongoose连接配置与错误捕获
当前代码缺少异步错误捕获逻辑,部分版本Mongoose需要显式指定连接参数,修改db.js代码如下:
import mongoose from "mongoose"; const connectDB = async () => { try { // Mongoose 6.x及以上版本可省略useNewUrlParser、useUnifiedTopology参数,已默认开启 await mongoose.connect("mongodb://127.0.0.1:27017/wetube", { useNewUrlParser: true, useUnifiedTopology: true }); console.log("MongoDB 连接成功"); } catch (err) { console.error("MongoDB 连接失败:", err); process.exit(1); } } export default connectDB;
修改完成后在项目入口文件调用connectDB()启动连接即可,既能捕获具体连接错误,也不会抛出未处理的Promise拒绝警告。
- 检查27017端口占用情况
若以上操作后仍报错,在PowerShell执行netstat -ano | findstr "27017"查看27017端口是否被MongoDB占用,无输出则说明MongoDB未正常监听该端口,需检查mongod配置是否修改了默认端口。
错误截图:
内容的提问来源于stack exchange,提问作者Lee Young Uk
相关产品推荐
相关产品推荐

