Node.js 18.12.0本地连接MongoDB失败?NestJS相关问题咨询
Node.js升级后NestJS无法连接MongoDB的问题排查与解决
可能的问题根源
- 版本兼容性不匹配:你使用的
mongoose@6.7.0发布于2022年10月,同期Node.js 18 LTS刚正式推出,该版本mongoose对Node.js 18的网络层默认配置、TLS策略变化适配不足,导致连接逻辑出现异常。 - 连接配置缺失适配参数:Node.js 18对网络请求的默认行为有调整(比如优先IPv6、TLS验证逻辑变化),而你的连接配置未补充对应适配项,引发连接失败。
解决方案
方案1:升级依赖到兼容版本
将mongoose和@nestjs/mongoose升级至支持Node.js 18的版本:
mongoose升级至^6.10.0及以上(该版本开始官方明确支持Node.js 18)- 对应升级
@nestjs/mongoose至^9.2.0及以上,保证与NestJS核心、mongoose的兼容性
执行升级命令:
npm install mongoose@^6.10.0 @nestjs/mongoose@^9.2.0
方案2:调整连接配置(无需升级依赖)
如果暂时不想升级依赖,可在连接选项中添加适配参数,强制兼容Node.js 18的默认行为:
MongooseModule.forRoot("mongodb://localhost:27017/nekmart", { connectionFactory: (connection) => { connection.plugin(slug, { number: true }); return connection; }, // 适配Node.js 18的配置项 directConnection: true, // 强制直接连接单节点MongoDB,避免拓扑解析异常 family: 4, // 强制使用IPv4,规避Node.js 18默认优先IPv6导致的连接失败 tls: false // 本地MongoDB无需TLS,关闭避免不必要的验证流程 }),
验证步骤
- 先尝试方案2的配置调整,重启应用查看是否恢复连接
- 若配置调整无效,再执行方案1的依赖升级,确保版本匹配
内容的提问来源于stack exchange,提问作者Kate
相关产品推荐
相关产品推荐

