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

已配置ES2022仍遇ts-jest顶级await错误,求解决方法

解决Jest测试中TS1378顶级await报错问题

核心问题

Jest默认可能未正确读取server/tsconfig.json的配置,或未适配ES模块模式,导致即便你已设置target和module为ES2022,依然触发顶级await的TS1378错误。

具体解决方案

1. 让Jest明确使用指定的tsconfig

在Jest配置文件(jest.config.js或jest.config.ts)中,通过ts-jest的配置项直接指向server/tsconfig.json,确保测试编译规则与业务代码一致:

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  transform: {
    '^.+\\.tsx?$': ['ts-jest', {
      tsconfig: 'server/tsconfig.json' // 显式指定tsconfig路径
    }]
  }
};

2. 配置Jest支持ES模块

由于你使用了module: ES2022,需要调整Jest适配ES模块模式(默认是CommonJS):

module.exports = {
  preset: 'ts-jest/presets/default-esm', // 启用ESM预设
  testEnvironment: 'node',
  extensionsToTreatAsEsm: ['.ts'], // 将.ts文件识别为ES模块
  moduleNameMapper: {
    '^(\\.{1,2}/.*)\\.js$': '$1' // 处理ES模块导入时的.js后缀问题
  },
  transform: {
    '^.+\\.tsx?$': ['ts-jest', {
      useESM: true,
      tsconfig: 'server/tsconfig.json'
    }]
  }
};

3. 检查Node.js版本兼容性

顶级await需要Node.js 14.8.0及以上版本,建议使用Node.js 18+ LTS版本,避免版本不足导致的隐性问题。

4. 完善tsconfig的模块解析配置

确保server/tsconfig.json中moduleResolution与module配置匹配,避免规则冲突:

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ES2022",
    "moduleResolution": "NodeNext", // 或Node16,适配ES模块
    "esModuleInterop": true,
    "strict": true,
    "outDir": "./dist"
  }
}

验证

完成以上配置后,重新运行Jest测试,TS1378错误应被解决,无需重构代码中的顶级await语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:05:54