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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:05:26