Node.js后端连接MongoDB失败:ECONNREFUSED错误求助
解决MongoDB与Node.js连接的ECONNREFUSED错误
1. 检查MongoDB服务状态
- Windows:打开命令提示符,运行
net start MongoDB,若提示服务未启动,先确认MongoDB安装完整,也可手动在系统服务列表中找到MongoDB服务并启动。 - macOS/Linux:终端执行
sudo systemctl start mongod,用sudo systemctl status mongod查看服务是否正常运行。
2. 修正连接字符串配置
检查你的server.js中的MongoDB连接代码:
- 本地连接优先用
mongodb://127.0.0.1:27017/你的数据库名,部分环境下IPv6地址::1可能存在兼容性问题,换成IPv4的127.0.0.1可规避这类问题。 - 确认连接字符串里的数据库名称拼写正确,不要遗漏。
3. 排查端口与防火墙问题
- 确认本地防火墙没有拦截27017端口的入站/出站请求。
- 检查端口是否被其他程序占用:
- Windows:执行
netstat -ano | findstr :27017 - macOS/Linux:执行
lsof -i :27017
若端口被占用,要么停止占用该端口的程序,要么修改MongoDB配置文件(mongod.conf)中的端口号,同时同步更新Node.js里的连接字符串。
- Windows:执行
4. 验证MongoDB安装完整性
如果MongoDB服务启动失败,大概率是安装环节有问题:
- 检查MongoDB默认数据目录是否存在且有权限(Windows默认
C:\data\db,Linux/macOS默认/data/db),不存在则手动创建。 - 重新安装时,Windows环境务必勾选“Install MongoDB as a Service”选项,确保服务能被系统管理。
5. 用极简脚本测试连接
先脱离业务代码,写个极简脚本验证基础连接是否正常:
const mongoose = require('mongoose'); // 用原生MongoDB驱动的话替换成对应包 async function testMongoConn() { try { await mongoose.connect('mongodb://127.0.0.1:27017/test-demo'); console.log('MongoDB连接成功'); await mongoose.disconnect(); } catch (err) { console.error('连接失败详情:', err); } } testMongoConn();
如果这个脚本仍报错,说明问题出在环境配置而非业务代码。
内容的提问来源于stack exchange,提问作者Swastik Kasera
相关产品推荐
相关产品推荐

