Node.js连接MongoDB时出现MongoServerSelectionError错误求助
排查Node.js连接MongoDB出现
MongoServerSelectionError: connect ECONNREFUSED ::1:27017的问题 错误原因
- MongoDB本地服务未启动:端口27017没有被MongoDB监听,导致连接请求被拒绝。
- IPv6地址解析问题:
localhost被解析为IPv6地址::1,但MongoDB可能仅监听了IPv4的127.0.0.1端口。 - MongoDB配置限制:服务绑定了特定IP(未包含本地地址),或者修改了默认端口(不是27017)。
解决办法
1. 检查并启动MongoDB服务
- Windows:按下
Win+R输入services.msc打开服务管理器,找到MongoDB服务,右键选择「启动」,可设置为「自动」启动避免重复问题。 - macOS:若用Homebrew安装,执行命令:
手动安装则执行:brew services start mongodb-communitysudo mongod --config /usr/local/etc/mongod.conf - Linux:执行命令启动服务:
可通过sudo systemctl start mongodsudo systemctl status mongod检查服务状态。
2. 修改连接地址为IPv4格式
将连接URL从mongodb://localhost:27017/改为mongodb://127.0.0.1:27017/,强制使用IPv4连接,避免解析问题。
3. 检查MongoDB配置文件
找到MongoDB的配置文件(路径根据系统不同有所差异):
- Windows:
C:\Program Files\MongoDB\Server\{版本号}\bin\mongod.cfg - macOS:
/usr/local/etc/mongod.conf - Linux:
/etc/mongod.conf
打开配置文件后:
- 找到
net.bindIp项,确保值包含127.0.0.1或设置为0.0.0.0(允许所有IP访问)。 - 检查
net.port项,确认端口为27017,若修改过则同步更新连接URL中的端口号。
优化你的连接代码
建议添加错误捕获和连接关闭逻辑,避免未处理异常:
const { MongoClient } = require('mongodb'); const url = 'mongodb://127.0.0.1:27017/'; const client = new MongoClient(url); const dataBase = 'nodejs'; async function getdata() { try { await client.connect(); console.log('连接到服务器成功'); const db = client.db(dataBase); const collection = db.collection('node'); const response = await collection.find({}).toArray(); console.log(response); } catch (err) { console.error('操作出错:', err); } finally { await client.close(); } } getdata();
内容的提问来源于stack exchange,提问作者jaswant patel
相关产品推荐
相关产品推荐

