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

NodeJS使用ES6实验性模块+Express启动报错排查求助

排查ES6模块+Express服务器启动失败的常见细节

先给你列几个最容易遗漏的点,都是我踩过的坑:

  • 必须在package.json中声明模块类型
    Node.js默认采用CommonJS模块规范,要启用ES6模块,你需要在项目根目录的package.json里添加一行:

    {
      "type": "module"
    }
    

    要是之前的项目有这个配置,现在不小心删掉了,就会直接触发模块语法错误。

  • 导入语法和路径要符合ES模块规则
    别再用require()了,必须换成import,而且相对路径必须带完整后缀(比如.js),举个最简测试代码的正确写法:

    import express from 'express';
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Test Server Running!');
    });
    
    app.listen(3000, () => {
      console.log('Listening on port 3000');
    });
    

    比如你导入本地路由文件,得写import router from './routes.js',不能省略.js,这是ES模块的硬性要求。

  • 别再用过时的--experimental-modules flag
    从Node.js 13.2.0版本开始,ES模块已经是稳定特性了,不需要再加这个实验性标志。如果你的Node版本是16+的LTS版,直接用node src/app.js启动就行,老版本的实验性模块可能有兼容性问题,建议升级到稳定版。

  • 文件后缀名的兜底方案
    要是你不想改package.json,可以把你的ES模块文件后缀改成.mjs,比如app.mjs,启动命令对应改成node src/app.mjs(旧版本可能还是需要加--experimental-modules)。

另外,建议把完整的错误信息贴出来,比如后面的SyntaxError内容,能更快定位问题,但先按上面的点排查基本能解决大部分情况。

内容的提问来源于stack exchange,提问作者Elie G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:50