Node.js新手遇MongooseServerSelectionError,MongoDB连接失败求助
解决Mongoose连接MongoDB报错:MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
这个报错是MongoDB连接被拒绝导致的,下面是具体排查和解决步骤:
检查MongoDB服务是否运行
- Windows:打开服务管理器,找到MongoDB服务,确认状态为“正在运行”;也可以在命令行执行
net start MongoDB启动服务 - macOS/Linux:通过
systemctl start mongod启动服务,若用Homebrew安装则执行brew services start mongodb-community
- Windows:打开服务管理器,找到MongoDB服务,确认状态为“正在运行”;也可以在命令行执行
改用IPv4地址连接
代码中localhost可能被解析为IPv6地址::1,但MongoDB默认可能仅监听IPv4的127.0.0.1。把连接字符串修改为:mongoose.connect("mongodb://127.0.0.1:27017/gbs", {useNewUrlParser: true, useUnifiedTopology: true }, ...)确认MongoDB监听端口为27017
- 查看MongoDB配置文件(通常命名为
mongod.conf)中的net.port配置,确保值为27017 - 用命令检查端口占用:
- macOS/Linux:
lsof -i :27017 - Windows:
netstat -ano | findstr :27017
- macOS/Linux:
- 查看MongoDB配置文件(通常命名为
检查MongoDB绑定IP配置
打开MongoDB配置文件,查看net.bindIp项,确保包含127.0.0.1或localhost;开发环境若需要允许所有连接,可设置为0.0.0.0(生产环境需谨慎)
修改后的完整代码示例:
const express = require('express') const app = express() const mongoose = require('mongoose'); mongoose.set('strictQuery', false); var routes = require('./route/routes'); const cors = require('cors'); app.use(cors({ origin: "http://localhost:8080" })); app.listen(9991, function check(err) { if(err) console.log("error") else console.log("started") }); mongoose.connect("mongodb://127.0.0.1:27017/gbs", {useNewUrlParser: true, useUnifiedTopology: true }, function checkDb(error) { if(error) { console.log(error); } else { console.log("successfully Connected to DB"); } }); app.use(express.json()); app.use(routes);
内容的提问来源于stack exchange,提问作者John Peter
相关产品推荐
相关产品推荐

