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

Jest运行TypeScript测试时兼容含ES模块import的自动生成JS文件的配置方案

Jest运行TypeScript测试时兼容含ES模块import的自动生成JS文件的配置方案

我完全懂你现在的困扰——那个自动生成的JS文件用了ES模块的import语法,可Jest跑测试的时候直接报语法错误,还没法修改生成文件本身。别慌,咱们调整几个配置项就能解决这个问题,下面一步步来:

1. 优化jest.config.js配置

核心思路是让Jest把自动生成的JS文件当作ES模块处理,并且让ts-jest负责转换它。修改后的配置如下:

/** @type {import('ts-jest').JestConfigWithTsJest} **/
module.exports = {
  preset: 'ts-jest/presets/default-esm', // 保留ES模块预设
  testEnvironment: "node",
  transform: {
    "^.+\\.tsx?$": ["ts-jest", { useESM: true }],
    // 新增:让ts-jest也处理生成的ES模块JS文件
    "^.+\\.js$": ["ts-jest", { useESM: true }],
  },
  // 新增:把自动生成的.js文件标记为ES模块
  extensionsToTreatAsEsm: ['.ts', '.js'],
  moduleNameMapper: {
    '^(\\.{1,2}/.*)\\.js$': '$1', // 解开注释,处理JS文件的导入路径
  },
  // 关键:不要忽略自动生成文件的转换,确保Jest会处理它
  transformIgnorePatterns: [
    'node_modules/(?!(your-other-esm-deps-if-any)/)', // 如果有其他ES模块依赖,也可以加在这里
    '!src/declarations/',
  ],
  moduleFileExtensions: ['ts', 'js', 'mjs', 'mts'], // 明确支持的文件扩展名
};

2. 调整tsconfig.json让TypeScript识别生成文件

把自动生成的JS目录加入TypeScript的编译范围,避免测试文件导入时出现类型错误:

{
    "compilerOptions": {
      "target": "es6",
      "lib": ["ES2018", "DOM"],
      "allowJs": true,
      "jsx": "react",
      "moduleResolution": "nodenext",
      "module": "nodenext",
      "skipLibCheck": true,
      "esModuleInterop": true, // 新增:提升ES模块与CommonJS的兼容性
    },
    "include": ["src/**/*.ts", "./src/custom.d.ts", "src/declarations/**/*.js"], // 加入生成的JS文件
    "exclude": ["node_modules"]
}

3. 可选:确认package.json的模块类型

如果你的项目本身是ES模块优先,建议在package.json里加上:

"type": "module"

这会让Node.js默认把.js文件当作ES模块,和你生成文件的语法风格保持一致,也能减少Jest的识别冲突。

为什么这些修改能解决问题?

  • 给transform加上.js的处理规则,让ts-jest把生成的ES模块JS文件转成Jest能理解的格式
  • extensionsToTreatAsEsm标记.js为ES模块,避免Jest把它当作CommonJS处理
  • transformIgnorePatterns排除生成目录,防止Jest跳过对它的转换
  • TypeScript配置里包含生成文件,确保测试代码导入时不会出现类型报错

现在再运行npx jest test/test.ts,应该就能正常执行测试,不会再报SyntaxError: Cannot use import statement outside a module的错误了。

备注:内容来源于stack exchange,提问作者porton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:35:27