Ubuntu20.04运行Node.js项目遇mongoose flatMap报错求助
问题解决方法
错误根源
这个错误和MongoDB服务端版本无关,核心原因是你的Node.js版本过低,不支持ES2019新增的Array.prototype.flatMap数组方法——错误出在Mongoose的内部代码调用了这个方法,而低版本Node.js无法识别它。
具体解决方案
1. 检查当前Node.js版本
先确认你的Node.js版本:
node -v
如果版本低于11.0.0,必然会触发这个错误(flatMap从Node.js 11.0.0开始原生支持,建议升级到14.x及以上的LTS稳定版本)。
2. 升级Node.js版本
推荐用nvm(Node版本管理器)来安全升级,步骤如下:
- 安装nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - 安装完成后重启终端,验证nvm是否安装成功:
nvm --version - 安装并切换到16.x LTS版本:
nvm install 16 nvm use 16 - 如需设置为默认版本,执行:
nvm alias default 16
3. 备选方案:降级Mongoose版本
如果暂时无法升级Node.js,可以降级Mongoose到不依赖flatMap的版本。比如Mongoose 6.x要求Node.js 12.0.0+,若你的Node版本在8.x-11.x之间,可降级到Mongoose 5.x:
npm uninstall mongoose npm install mongoose@5.x
代码优化建议
你的MongoDB连接代码同时混用了await和.then()/.catch(),写法可以统一,避免逻辑混淆:
module.exports = async () => { mongoose.set('strictQuery', false); try { await mongoose.connect(config.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, }); logger.info(`MongoDB connected `); } catch (err) { logger.error('MongoDB NO CONNECT :' + err); } };
内容的提问来源于stack exchange,提问作者ogggy
相关产品推荐
相关产品推荐

