Node.js 17/18版本中Mongoose连接MongoDB失败求助
解决Node.js 18(17+)下Mongoose连接MongoDB失败的问题
核心解决方案
1. 强制使用IPv4连接
Node.js 17及以上版本默认优先采用IPv6解析DNS,若MongoDB服务器未配置IPv6支持,会直接导致连接失败。在Mongoose连接配置中添加family: 4参数,强制使用IPv4协议:
const mongoose = require("mongoose"); const { MONGO_URI } = process.env; exports.connect = () => { mongoose .connect(MONGO_URI, { family: 4 }) .then(() => { console.log("Successfully connected to database"); }) .catch((error) => { console.log("database connection failed. exiting now..."); console.error(error); process.exit(1); }); };
2. 升级Mongoose至兼容版本
旧版Mongoose(如5.x系列)与Node.js 18存在兼容性冲突,直接升级到最新稳定版即可解决大部分适配问题:
npm install mongoose@latest
3. 调整本地连接字符串
若连接本地MongoDB,将URI中的localhost替换为127.0.0.1,绕开IPv6解析的优先级问题:
- 原连接串:
mongodb://localhost:27017/your-db-name - 修改后:
mongodb://127.0.0.1:27017/your-db-name
4. 验证MongoDB服务状态
确认MongoDB服务已正常启动,且允许当前进程所在IP访问,同时检查端口(默认27017)未被防火墙或其他进程占用。
内容的提问来源于stack exchange,提问作者barak formanski
相关产品推荐
相关产品推荐

