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

NodeJS中export default routes;语法错误及替代方案咨询

问题原因

完全没错!你判断得很准确——Node.js 9版本原生并不支持ES6模块的import/export语法,这就是你遇到报错的核心原因。

早期的Node.js默认采用CommonJS模块规范,用require()和module.exports来处理模块导入导出;而ES6的import/export是ECMAScript官方的模块标准,Node.js从较晚的版本(大概v12之后才逐步稳定支持)才开始原生支持,v9阶段还处于实验性探索阶段,没有默认开启。

替代方案

这里给你几个实用的解决方向,根据你的需求选择就行:

  • 直接改用CommonJS语法(最省心的入门方案)
    不用额外工具,直接把ES6模块语法转换成Node原生支持的CommonJS写法:

    • 把import xxx from 'module-name'改成const xxx = require('module-name')
    • 把export default MyModule改成module.exports = MyModule
    • 把export { func1, func2 }改成module.exports = { func1, func2 }或者exports.func1 = func1; exports.func2 = func2
      这个方案零配置,适合刚接触Node.js的新手快速推进学习。
  • 用Babel转译ES6代码(保留ES6语法的方案)
    如果想继续使用ES6的import等语法,可以用Babel把代码转译成Node能识别的CommonJS代码:

    1. 先在项目里安装依赖:
      npm install @babel/core @babel/cli @babel/preset-env --save-dev
      
    2. 在项目根目录创建.babelrc配置文件,内容如下:
      {
        "presets": ["@babel/preset-env"]
      }
      
    3. 运行代码的时候,用babel-node替代node命令(适合开发阶段):
      npx babel-node your-file.js
      
      或者先编译代码再运行(适合生产环境):
      npx babel src --out-dir dist
      node dist/your-file.js
      
  • 启用Node.js的实验性ES模块支持(不推荐生产使用)
    Node.js 9其实带有实验性的ES模块支持,你可以通过以下方式开启:

    1. 把你的JavaScript文件后缀改成.mjs
    2. 运行时加上--experimental-modules参数:
      node --experimental-modules your-file.mjs
      
      不过要注意,这个特性在v9阶段还很不成熟,有不少兼容性问题,只适合用来测试学习,不建议在实际项目中使用。

内容的提问来源于stack exchange,提问作者bennyharassi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:05:20