启动Node.js服务器时遇ECONNREFUSED ::1:27017错误,求解决方案
解决MongoServerSelectionError: connect ECONNREFUSED ::1:27017(Chromebook Linux虚拟机环境)
1. 检查MongoDB服务状态
- 执行命令查看服务是否正常运行:
systemctl status mongod - 若服务未启动,手动启动并设置开机自启:
sudo systemctl start mongod sudo systemctl enable mongod - 若启动失败,查看系统日志定位原因:
常见问题为数据目录权限错误,修复命令:journalctl -u mongodsudo chown -R mongodb:mongodb /var/lib/mongodb sudo chmod -R 755 /var/lib/mongodb
2. 修正MongoDB连接字符串
- 错误提示中连接的是IPv6地址
::1,部分虚拟机环境下IPv6回环可能存在问题,将连接字符串改为明确使用IPv4:// 替换为你的数据库名 const uri = 'mongodb://127.0.0.1:27017/your-database-name'; - 检查MongoDB配置文件
/etc/mongod.conf,确保net.bindIp设置为127.0.0.1或0.0.0.0,修改后重启服务:sudo systemctl restart mongod
3. 验证端口占用情况
- 检查27017端口是否被MongoDB占用:
若结果中没有ss -tulpn | grep 27017mongod进程,说明MongoDB未正常启动或端口被其他程序占用,需排查对应进程。
4. Chromebook虚拟机网络与权限检查
- 确认Linux虚拟机的网络模式为「共享网络」,允许本地回环连接;
- 在虚拟机终端直接用
mongosh命令连接MongoDB,验证服务本身是否可访问:mongosh mongodb://127.0.0.1:27017 - 若虚拟机开启防火墙,添加端口放行规则:
sudo ufw allow 27017
5. 代码层面排查
- 确保Node.js代码中MongoClient的连接参数正确,示例:
const { MongoClient } = require('mongodb'); const uri = 'mongodb://127.0.0.1:27017/your-database-name'; async function connect() { const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); console.log('Connected to MongoDB'); } catch (err) { console.error(err); } finally { await client.close(); } } connect(); - 检查代码中是否遗漏了必要的连接配置,比如认证信息(若开启了MongoDB认证)。
内容的提问来源于stack exchange,提问作者Rifan
相关产品推荐
相关产品推荐

