You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动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 mongod
    
    常见问题为数据目录权限错误,修复命令:
    sudo 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 27017
    
    若结果中没有mongod进程,说明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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:05:12