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

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
  • 改用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
  • 检查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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:32:20