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

如何最小化配置让Jest支持ES模块import语法?

解决Jest中ES模块import语句报错的最小化配置

针对Node 22.8.0 + Jest 29.7.0 + ts-jest 29.2.5环境,只需以下几步修改即可让import语句正常工作:

1. 配置package.json启用ES模块

在项目根目录的package.json中添加"type": "module"字段,告诉Node.js默认将所有文件视为ES模块:

{
  "type": "module",
  // 其他已有字段...
}

2. 调整TypeScript配置(针对TS项目)

修改tsconfig.json,确保模块系统和解析策略适配ES模块:

{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "NodeNext",
    "target": "ES2022", // 匹配Node 22支持的ES版本
    // 其他已有配置...
  }
}

3. 创建ES模块格式的Jest配置文件

将Jest配置文件命名为jest.config.mjs(启用ES模块后不能用.js后缀),内容如下:

export default {
  preset: 'ts-jest/presets/default-esm', // 使用ts-jest的ES模块预设
  testEnvironment: 'node',
  // 解决TS中ES模块导入需要加.js后缀的问题
  moduleNameMapper: {
    '^(\\.{1,2}/.*)\\.js$': '$1'
  },
  extensionsToTreatAsEsm: ['.ts']
};

4. 调整测试文件的导入路径(可选)

在TypeScript测试文件中,导入本地模块时需符合Node.js ES模块规范加上.js后缀,例如:

// 正确写法
import { sum } from './sum.js';

若不想加后缀,上述jest.config.mjs中的moduleNameMapper会自动映射掉.js后缀,两种写法均可生效。

完成以上步骤后,运行jest命令即可正常执行使用import语句的测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:20:06