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

macOS Big Sur brew安装MongoDB可mongosh连接但Mongoose报ECONNREFUSED错误

问题原因
  • 报错本质是Node.js尝试通过IPv6本地地址::1连接MongoDB被拒绝,和Mongo shell的连接逻辑差异是核心诱因:
    1. brew默认安装的mongodb-community仅绑定了IPv4本地回环地址127.0.0.1,没有监听IPv6的::1地址
    2. mongosh解析localhost时会优先尝试IPv4地址,所以能正常连接到127.0.0.1:27017
    3. Node.js v17及以上版本调整了DNS解析默认规则,解析localhost时会优先返回IPv6地址::1,Mongoose拿到这个地址发起连接时自然会被未监听IPv6的MongoDB拒绝
解决方案

以下方案按需选择即可:

方案1:直接修改连接地址(最快捷)

把连接字符串中的localhost替换为IPv4本地地址127.0.0.1,强制走IPv4连接:

import mongoose from 'mongoose';
mongoose.connect('mongodb://127.0.0.1:27017/mydb', {
    useNewUrlParser: true,
    useUnifiedTopology: true
});

方案2:修改MongoDB配置支持IPv6

如果需要保留localhost写法,也可以调整MongoDB的监听配置:

  1. 找到MongoDB配置文件:
    • Intel芯片Mac路径:/usr/local/etc/mongod.conf
    • M系列芯片Mac路径:/opt/homebrew/etc/mongod.conf
  2. 找到net配置段下的bindIp项,修改为同时绑定IPv4和IPv6本地地址:
    net:
      bindIp: 127.0.0.1, ::1
      port: 27017
    
  3. 重启MongoDB服务生效:brew services restart mongodb-community

方案3:添加解析参数强制IPv4

也可以在连接字符串后加family=4参数,指定Node.js用IPv4解析localhost:

mongoose.connect('mongodb://localhost:27017/mydb?family=4', {
    useNewUrlParser: true,
    useUnifiedTopology: true
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:45:10