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

TypeScript+ESM项目导入CJS文件遇Unexpected token export错误及解决

问题解决方法及原因分析

快速解决

  • 修改tsconfig.json中compilerOptions的module配置项为Node16:
{
  "compilerOptions": {
    // ...其他配置
    "module": "Node16"
    // ...其他配置
  }
}

问题原因

你的TypeScript+ESM项目引入CJS模块时,当前配置module: "es2020"会导致ts-node在处理.cjs文件时,错误注入export {}语句(该语句并非手动添加)。Node.js的CJS模块加载器无法识别ESM的export语法,因此抛出语法错误。

切换到Node16模块模式后,TypeScript会严格遵循Node.js的ESM与CJS交互规则,正确处理CJS模块的导入逻辑,避免对CJS文件进行不必要的ESM转换操作。


提问场景还原

我有一个结构简单的TypeScript+ESM项目,依赖一个CJS模块,代码如下:

index.ts

import myFunc from "./myfile.cjs"
(...)

已在tsconfig.json的compilerOptions中设置allowSyntheticDefaultImports和esModuleInterop,但使用ts-node执行项目(命令:node --loader ts-node/esm --experimental-specifier-resolution=node src/index.ts)时,出现语法错误,提示CJS文件myfile.cjs存在意外的export token(export {};)。

完整错误日志:

export {};
^^^^^^

SyntaxError: Unexpected token 'export'
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1027:15)
    at Module._compile (node:internal/modules/cjs/loader:1063:27)
    at Module.m._compile (/Users/cjg/Git/ast/node_modules/ts-node/src/index.ts:1618:23)
    at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Object.require.extensions.<computed> [as .js] (/Users/cjg/Git/ast/node_modules/ts-node/src/index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:170:29)
    at ModuleJob.run (node:internal/modules/esm/module_job:198:25)

tsconfig.json配置:

{
    "compilerOptions": {
        "moduleResolution": "node",
        "baseUrl": "./src",
        "module": "es2020",
        "outDir": "./dist",
        "allowJs": true,
        "target": "es2020",
        "allowSyntheticDefaultImports": true,
        "esModuleInterop": true,
    },
        "include": [
        "./src/**/*"
    ]
}

环境版本:

  • ts-node版本:10.9.1
  • node版本:17.9.0
  • tsc版本:4.7.4

内容的提问来源于stack exchange,提问作者Carlos Gonçalves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:20:52