Node.js连接MongoDB遭遇MongoServerSelectionError错误求助
解决MongoServerSelectionError: connect ECONNREFUSED ::1:27017问题
核心原因分析
错误提示connect ECONNREFUSED ::1:27017说明Node.js程序无法连接到MongoDB服务,常见原因包括MongoDB未启动、IPv6解析冲突、端口被拦截或连接配置错误。
排查与解决步骤
1. 确认MongoDB服务正在运行
- Windows:打开「服务」面板,找到MongoDB服务,确保状态为「正在运行」;若未启动,右键选择「启动」,或执行命令:
net start MongoDB - macOS(brew安装):执行
brew services start mongodb-community启动服务 - Linux:执行
sudo systemctl start mongod启动服务,用sudo systemctl status mongod验证运行状态
- Windows:打开「服务」面板,找到MongoDB服务,确保状态为「正在运行」;若未启动,右键选择「启动」,或执行命令:
2. 修正连接配置,强制使用IPv4
错误中出现::1(IPv6本地地址),说明Node.js优先尝试IPv6连接,但MongoDB可能未监听IPv6。启用family:4配置强制使用IPv4,同时改用async/await优化错误捕获:const mongoose = require("mongoose"); const MongoUrl = "mongodb://localhost:27017"; const mongoConnect = async () => { try { await mongoose.connect(MongoUrl, { useNewUrlParser: true, useUnifiedTopology: true, family: 4 // 强制使用IPv4,避免IPv6解析问题 }); console.log("Connected to MongoDB successfully"); } catch (err) { console.error("MongoDB connection failed:", err); } }; mongoConnect();3. 替换localhost为127.0.0.1
若上述配置无效,将连接字符串改为mongodb://127.0.0.1:27017,直接指定IPv4本地地址,绕过localhost的DNS解析冲突。4. 验证端口与防火墙设置
- 确认MongoDB默认端口27017未被其他程序占用,可执行
netstat -ano | findstr :27017(Windows)或lsof -i :27017(macOS/Linux)检查端口占用 - 确保本地防火墙、杀毒软件未拦截27017端口的入站/出站请求
- 确认MongoDB默认端口27017未被其他程序占用,可执行
内容的提问来源于stack exchange,提问作者Ayush jangid
相关产品推荐
相关产品推荐

