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

Mongoose连接MongoDB出现ECONNREFUSED及无效消息大小错误如何解决

问题排查与解决方案

第一个报错:MongooseServerSelectionError: connect ECONNREFUSED ::1:27017

原因

Windows系统默认将localhost优先解析为IPv6地址::1,但本地MongoDB服务默认仅监听IPv4的127.0.0.1地址,导致连接请求被拒绝。

临时解决方法

直接将连接地址中的localhost替换为IPv4地址127.0.0.1即可,修改后代码如下:

const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/notes-db-app',{
    useNewUrlParser: true, 
    useUnifiedTopology: true
})
.then(db => console.log('DB is connected'))
.catch(err => console.log(err));

永久解决方法(可选)

如果需要保留localhost写法,可修改MongoDB配置文件mongod.cfg,找到net配置段的bindIp项,添加IPv6地址::1,修改后如下:

net:
  port: 27017
  bindIp: 127.0.0.1,::1

修改完成后重启MongoDB服务即可生效。


第二个报错:MongooseServerSelectionError: Invalid message size: 1347703880, max allowed: 67108864

原因

错误日志明确显示当前Mongoose尝试连接的地址为localhost:3000,3000是Node.js Web服务的常用默认端口,而非MongoDB的服务端口。该错误码1347703880转成ASCII对应字符HTTP,说明MongoDB协议请求发到了HTTP服务上,返回的响应不符合MongoDB报文格式,所以抛出报文大小异常。

解决方法

  1. 确认代码中是否有其他配置覆盖了MongoDB连接地址,修正连接端口为MongoDB实际监听的端口(默认27017)
  2. 检查启动脚本、环境变量配置,确认没有误将MongoDB端口设置为Web服务的3000端口
  3. 进入MongoDB的bin目录执行mongo命令,确认MongoDB服务正常运行且监听端口为27017

通用排查步骤

如果修改后仍无法连接,可按以下步骤确认:

  • 执行netstat -ano | findstr "27017",检查27017端口是否有进程监听,对应PID是否为MongoDB进程
  • 执行mongo --host 127.0.0.1 --port 27017,测试本地能否直接连接MongoDB服务
  • 检查本地防火墙是否拦截了27017端口的本地连接请求

内容的提问来源于stack exchange,提问作者InthraDev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:09:00