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

升级Node.js至v20后Jest测试报SyntaxError: Unexpected token 'export'错误

解决Node.js v20下NestJS Jest测试报错SyntaxError: Unexpected token 'export'

问题根源

Node.js v20对ES模块的解析规则更严格,而@aws-sdk/client-ssm已升级为纯ES模块发布。你的Jest配置中transformIgnorePatterns未包含@aws-sdk相关包,导致这些ES模块代码未被ts-jest转换,Jest尝试以CommonJS规则解析时触发语法错误。

解决方案

1. 更新Jest的transformIgnorePatterns配置

修改jest.config.js,将@aws-sdk加入需要转换的node_modules白名单:

export default {
  // ... 其他原有配置
  transformIgnorePatterns: ['/node_modules/(?!@aws-sdk|@smithy|uuid)'],
  // ... 其他原有配置
};

2. 确保测试用TypeScript配置为CommonJS

检查tsconfig.spec.json,确保compilerOptions.module设置为CommonJS(Jest在Node环境下默认兼容该模块系统):

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "module": "CommonJS",
    "outDir": "../../dist/out-tsc/spec",
    "types": ["jest", "node"]
  },
  "include": ["**/*.spec.ts", "**/*.d.ts"]
}

3. 升级Jest及相关依赖版本

Node.js v20需要兼容的Jest版本(推荐29.x+),执行以下命令更新依赖:

npm install jest@latest ts-jest@latest @types/jest@latest --save-dev

4. 额外兼容配置(若上述步骤无效)

如果仍存在ES模块解析问题,在jest.config.js中添加以下配置:

export default {
  // ... 其他原有配置
  extensionsToTreatAsEsm: ['.ts'],
  moduleNameMapper: {
    '^(\\.{1,2}/.*)\\.js$': '$1',
  },
  // ... 其他原有配置
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:18:23