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

TypeScript生产构建报错:Unexpected token import问题求助

解决TypeScript编译后Node运行报错Unexpected token import的问题

我来帮你梳理下问题所在和解决办法:

首先,你遇到的Unexpected token import错误,核心原因是Node.js v8.9.3默认不支持ES模块的import语法。这个版本的Node对ES模块的支持还处于实验阶段,默认只会识别CommonJS的require/module.exports语法。而你的TypeScript编译后可能输出了ES6模块代码,所以Node运行时无法解析。

最直接的解决方案:修改tsconfig.json编译为CommonJS

你需要调整tsconfig.json里的模块编译配置,让TypeScript把代码转成Node v8能识别的CommonJS格式:

  1. 打开你的tsconfig.json,找到compilerOptions部分,确保以下配置:

    {
      "compilerOptions": {
        "module": "CommonJS", // 关键:指定编译为CommonJS模块
        "target": "ES2017", // 适配Node v8的支持版本,v8对ES2017支持较好
        "outDir": "./build", // 确保输出目录正确
        "strict": true // 可选,但开启严格模式利于代码质量
      },
      "include": ["src/**/*"] // 确保包含你的源码文件
    }
    
  2. 重新执行tsc编译,然后检查build/index.js里的代码,应该已经把import替换成require了。

  3. 再次运行node build/index.js,这个错误应该就消失了。

如果你一定要用ES模块(不推荐在Node v8中)

如果因为某些原因必须使用ES模块语法,你需要做这些操作,但注意Node v8的ES模块支持很有限,容易出问题:

  • 修改tsconfig.json的module为"ESNext"
  • 把编译后的文件后缀改成.mjs
  • 运行时加上实验性标志:node --experimental-modules build/index.mjs

额外提醒

Node.js v8.9.3已经是非常老旧的版本了,早在2019年就停止了维护,不仅缺少很多新特性,还有安全漏洞。如果条件允许,建议你升级到Node.js的LTS版本(比如16.x或更高),这样对ES模块的支持会更完善,也能避免很多潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:49:34