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

Mongoose连接MongoDB报错ECONNREFUSED:本地服务已运行仍崩溃

排查MongooseServerSelectionError: connect ECONNREFUSED ::1:27017错误

运行代码时出现以下错误:

MongooseServerSelectionError: connect ECONNREFUSED ::1:27017

同时nodemon提示:

[nodemon] app crashed - waiting for file changes before starting...

本地MongoDB服务已处于运行状态,相关代码文件如下:

app.js

const express = require("express");
const app = express();

app.use(express.json());

const product = require("./routes/ProductRoutes");

app.use("/api/v2", product);

module.exports = app;

server.js

const app = require("./app");
const dotenv = require("dotenv");
const connectDatabase = require("./db/Database");

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

connectDatabase();

const server = app.listen(process.env.PORT, () => {
  console.log(`Server is running on https://localhost:${process.env.PORT}`);
});

database.js

const mongoose = require("mongoose");

const connectDatabase = () => {
  mongoose
    .connect(process.env.DB_URL, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    })
    .then((data) => {
      console.log(`mongodb is connected with server: ${data.connection.host}`);
    });
};

module.exports = connectDatabase;

.env

PORT = 4000 
  DB_URL = "mongodb://localhost:27017/ecommerce"

问题排查与解决方案

1. .env文件格式错误

当前.env文件中,DB_URL被双引号包裹,且变量名与等号之间存在多余空格,这会导致dotenv解析出的连接地址包含无效字符,直接引发连接失败。

修正后.env:

PORT=4000
DB_URL=mongodb://localhost:27017/ecommerce
  • 移除变量值的双引号
  • 删除变量名与等号之间的空格

2. IPv6连接兼容性问题

错误中的::1是IPv6格式的localhost,部分环境下MongoDB可能未监听IPv6端口,导致连接被拒绝。

解决方案:将localhost替换为IPv4地址127.0.0.1,强制使用IPv4连接:

DB_URL=mongodb://127.0.0.1:27017/ecommerce

3. 缺少数据库连接错误捕获

当前database.js仅处理了连接成功的回调,未捕获连接失败的错误,无法直观定位问题根源。

修正后database.js:

const mongoose = require("mongoose");

const connectDatabase = () => {
  mongoose
    .connect(process.env.DB_URL, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    })
    .then((data) => {
      console.log(`mongodb is connected with server: ${data.connection.host}`);
    })
    .catch((err) => {
      console.error("MongoDB连接失败:", err);
      process.exit(1); // 连接失败时终止进程,避免无意义等待
    });
};

module.exports = connectDatabase;

4. 环境变量路径验证

确认server.js中dotenv配置的路径backend/config/.env与项目实际结构匹配。可以在调用connectDatabase()前添加日志,验证环境变量是否正确读取:

console.log("读取的DB_URL:", process.env.DB_URL);
console.log("读取的PORT:", process.env.PORT);
connectDatabase();

如果输出为undefined,说明路径错误,需调整为正确的相对路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:30:56