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

Node.js连接MongoDB报ECONNREFUSED错误致npm崩溃问题排查

MongoDB本地连接ECONNREFUSED报错排查

问题表现

运行Node.js项目时进程持续崩溃,调用MongoDB连接逻辑时抛出MongoServerSelectionError,核心错误提示为connect ECONNREFUSED ::1:27017,提示服务选择超时,无法建立数据库连接。

涉及代码

数据库连接工具代码如下:

const mongodb = require('mongodb');

const MongoClient = mongodb.MongoClient;

let dataBase;

async function connect() {
   const client = await MongoClient.connect('mongodb://localhost:27017'); 
   dataBase = client.db('blog'); 
};

function getDb() {
    if (!dataBase) {
        throw { message: "Database connection not established" };
    }
    return dataBase;
};

module.exports = {
    connectToDatabase: connect,
    getDb: getDb
};

报错核心信息

MongoServerSelectionError: connect ECONNREFUSED ::1:27017

报错栈显示MongoDB驱动尝试连接IPv6回环地址::1的27017端口时被拒绝。

根因分析

  • 高版本Node.js解析域名localhost时,会优先尝试解析为IPv6回环地址::1,再尝试IPv4地址127.0.0.1
  • 默认配置下的本地MongoDB服务仅绑定IPv4回环地址127.0.0.1,没有监听IPv6地址的27017端口,导致连接请求被直接拒绝
  • 额外可能:本地MongoDB服务本身未启动,27017端口无进程监听

修复方案

  • 优先使用成本最低的修复:将连接字符串中的localhost替换为明确的IPv4地址127.0.0.1,强制驱动走IPv4连接,修改后的连接代码为:
const client = await MongoClient.connect('mongodb://127.0.0.1:27017');
  • 若需要保留localhost写法,可修改MongoDB配置文件,增加IPv6地址绑定配置,让MongoDB同时监听::1的27017端口,修改完成后重启MongoDB服务即可
  • 操作前先确认MongoDB服务状态:Windows系统执行netstat -ano | findstr "27017",macOS/Linux系统执行lsof -i:27017,确认27017端口存在MongoDB监听进程,若没有则先启动本地MongoDB服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 22:54:25