Mongoose连接MongoDB报错ECONNREFUSED 127.0.0.1:27017求助
MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017 问题求助与排查方案
问题详情
报错信息:
MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017 at _handleConnectionErrors (/home/mandil/code/mallamandilcoding/mongodb/node_modules/mongoose/lib/connection.js:755:11) at NativeConnection.openUri (/home/mandil/code/mallamandilcoding/mongodb/node_modules/mongoose/lib/connection.js:730:11) { reason: TopologyDescription { type: 'Unknown', servers: Map(1) { '127.0.0.1:27017' => [ServerDescription] }, stale: false, compatible: true, heartbeatFrequencyMS: 10000, localThresholdMS: 15, setName: null, maxElectionId: null, maxSetVersion: null, commonWireVersion: 0, logicalSessionTimeoutMinutes: null }, code: undefined }
已尝试操作:
- 在C盘创建data/db文件夹
- 从服务中重启mongod
- 重新安装MongoDB和mongoose
- MongoDB Compass可正常连接,但项目无法建立连接
排查解决方案
1. 核对Mongoose连接字符串
直接复用Compass能成功连接的字符串到项目中,确保没有遗漏认证信息、数据库名等。示例:
// 无认证连接 mongoose.connect('mongodb://127.0.0.1:27017/your-target-db') // 带用户名密码的认证连接 mongoose.connect('mongodb://your-username:your-password@127.0.0.1:27017/your-target-db?authSource=admin')
2. 确认MongoDB端口监听状态
- Windows终端执行:
netstat -ano | findstr :27017 - Linux/macOS终端执行:
lsof -i :27017
检查输出中是否有mongod进程在监听27017端口,若被其他进程占用,终止该进程或修改MongoDB配置端口。
3. 检查MongoDB配置文件
找到mongod.conf(Windows通常在C:\Program Files\MongoDB\Server\版本号\bin,Linux在/etc/mongod.conf),验证以下配置:
net.bindIp:设置为127.0.0.1或0.0.0.0(允许本地连接)net.port:确认是27017storage.dbPath:指向你创建的C:\data\db路径
修改后重启mongod服务。
4. 直接测试MongoDB服务连通性
在终端执行mongosh或mongo命令,若能成功进入MongoDB shell,说明服务正常,问题集中在Mongoose配置;若连接失败,查看MongoDB启动日志定位服务异常原因:
- Windows:通过事件查看器的“应用程序日志”查看
- Linux:查看
/var/log/mongodb/mongod.log
5. 排查防火墙拦截
临时关闭Windows防火墙或第三方安全软件,测试项目是否能连接MongoDB,若恢复正常,添加Node.js进程或27017端口的允许规则。
6. 重置项目依赖
删除项目根目录的node_modules文件夹和package-lock.json文件,重新执行npm install,确保依赖版本兼容且安装完整。
内容的提问来源于stack exchange,提问作者Mandil Malla
相关产品推荐
相关产品推荐

