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

ES6 import语法报错:MERN项目Ubuntu部署后端无法运行

问题解决:Node.js 10.x下ES模块语法报错

问题根源

你使用的Node.js 10.19.0版本不支持通过package.json中的"type":"module"来启用ES模块语法,这个特性是在Node.js 13.2.0之后才正式引入的,10.x版本仅提供实验性支持且存在大量兼容性问题。同时,你依赖的mongoose@6.6.5本身要求Node.js版本至少为12.0.0,这也是潜在的冲突点。

解决方案

方案1:升级Node.js到LTS版本(推荐)

Node.js 10.x已停止官方维护,升级到长期支持(LTS)版本是最稳妥的解决方式:

  • 安装nvm(Node版本管理器):
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    
  • 重启终端后,安装并切换到最新LTS版本:
    nvm install --lts
    nvm use --lts
    
  • 重新安装依赖并启动服务:
    rm -rf node_modules package-lock.json
    npm install
    npm run serve
    

方案2:将代码改为CommonJS格式

如果暂时无法升级Node,把所有ES模块语法替换为CommonJS:

  • 将import mongoose from "mongoose";改为:
    const mongoose = require('mongoose');
    
  • 将所有export语句替换为module.exports,例如:
    // 原ES模块导出
    export default app;
    // 改为CommonJS导出
    module.exports = app;
    
  • 移除package.json中的"type":"module"配置。

方案3:使用实验性标志启动(不推荐)

10.x版本可通过--experimental-modules标志启用ES模块支持,但可能遇到更多兼容性问题:

  • 修改package.json的scripts:
    "scripts": {
      "serve": "npx nodemon --experimental-modules index.js",
      "seed": "node --experimental-modules db/seeds.js"
    }
    
  • 注意:这种方式下,文件扩展名需改为.mjs,或保持.js并配合"type":"module",但仍可能出现依赖不兼容的情况。

内容的提问来源于stack exchange,提问作者A Bit Of Everything

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:55:20