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

MERN项目重启后Mongoose连接MongoDB失败:ECONNREFUSED 127.0.0.1:27017

解决MERN项目中MongoDB连接被拒绝(ECONNREFUSED 127.0.0.1:27017)的问题

问题详情

重启MERN应用后触发连接错误,同时MongoDB Compass也无法连接本地MongoDB服务,错误日志如下:

MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
    at NativeConnection.Connection.openUri (/Users/vaibhav/Desktop/Development/MERN PROJECT/node_modules/mongoose/lib/connection.js:824:32)
    at /Users/vaibhav/Desktop/Development/MERN PROJECT/node_modules/mongoose/lib/index.js:381:10
    at /Users/vaibhav/Desktop/Development/MERN PROJECT/node_modules/mongoose/lib/helpers/promiseOrCallback.js:41:5
    at new Promise (<anonymous>)
    at promiseOrCallback (/Users/vaibhav/Desktop/Development/MERN PROJECT/node_modules/mongoose/lib/helpers/promiseOrCallback.js:40:10)
    at Mongoose._promiseOrCallback (/Users/vaibhav/Desktop/Development/MERN PROJECT/node_modules/mongoose/lib/index.js:1234:10)
    at Mongoose.connect (/Users/vaibhav/Desktop/Development/MERN PROJECT/node_modules/mongoose/lib/index.js:380:20)
    at connectDataBase (/Users/vaibhav/Desktop/Development/MERN PROJECT/backend/config/dataBase.js:7:10)
    at Object.<anonymous> (/Users/vaibhav/Desktop/Development/MERN PROJECT/backend/server.js:17:1)
    at Module._compile (node:internal/modules/cjs/loader:1126:14) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) { 'localhost:27017' => [ServerDescription] },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    setName: null,
    maxElectionId: null,
    maxSetVersion: null,
    commonWireVersion: 0,
    logicalSessionTimeoutMinutes: null
  },
  code: undefined
}

相关配置与代码:
config.env文件:

PORT = 4000
DB_URI = "mongodb://localhost:27017/Ecommerce"

JWT_SECRET=JBRON098SROINRIOUHOHSDOKFN948HIFRCN
JWT_EXPIRE=5d

COOKIE_EXPIRE = 5

app.js文件:

const app = require('./app')

const dotenv = require('dotenv')
const connectDataBase = require("./config/dataBase")

//Handling uncaught exception
process.on("uncaughtException", (err) => {
    console.log(`Error: , ${err.message}`);
    console.log(`Shutting down server due to unhandled promise rejection`);
    process.exit(1);
})

//config file
dotenv.config({path:"backend/config/config.env"});

//Calling the function to connect the database
connectDataBase();

const server = app.listen(process.env.PORT, ()=>{
    console.log(`The server has started at http://localhost/${process.env.PORT}`);
})

设备环境:MacBook Air M2,macOS Ventura 13.0.1


分步解决方案

1. 确认MongoDB服务是否启动

这是ECONNREFUSED错误的最常见原因:

  • 系统偏好设置方式:打开系统偏好设置,拉至底部找到MongoDB图标,若显示「Stopped」则点击「Start」启动服务。
  • 终端命令方式:
    • 启动服务:
      brew services start mongodb-community
      
    • 检查服务状态:
      brew services list
      
      确认mongodb-community条目状态为started。
    • 手动安装版本启动命令(非Homebrew安装):
      mongod --config /usr/local/etc/mongod.conf
      

2. 检查27017端口是否被占用

如果服务启动失败,可能是端口被其他程序占用:

  • 查询端口占用进程:
    lsof -i :27017
    
  • 杀死占用进程(替换<PID>为查询到的进程ID):
    kill -9 <PID>
    
    之后重新启动MongoDB服务。

3. 修正DB_URI的格式问题

当前config.env中的DB_URI带有双引号,可能导致dotenv解析异常,修改为:

DB_URI=mongodb://localhost:27017/Ecommerce

移除连接字符串前后的双引号。

4. 验证基础连接有效性

服务启动后,先通过终端测试连接:

  • 使用旧版客户端:
    mongo
    
  • 使用新版客户端:
    mongosh mongodb://localhost:27017/Ecommerce
    
    若能成功进入MongoDB shell,再尝试启动MERN应用和MongoDB Compass连接。

5. 修复损坏的MongoDB安装

若以上步骤无效,可能是安装文件损坏:

  • 卸载现有版本:
    brew services stop mongodb-community
    brew uninstall mongodb-community
    
  • 重新安装最新版本:
    brew tap mongodb/brew
    brew install mongodb-community
    
    安装完成后启动服务并再次测试连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:55:31