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

将Jest测试转为TypeScript时遇模块导入语法错误

解决步骤

1. 安装缺失的TypeScript核心依赖

你之前漏掉了typescript依赖,它是ts-jest和ts-node运行的必备基础,执行:
yarn add --dev typescript

2. 初始化TypeScript配置(若未配置)

生成TypeScript的编译配置文件,方便后续调整编译规则:
npx tsc --init
建议将配置里的target设为ES6,module设为CommonJS——这能避免Jest处理ES模块的兼容性问题。

3. 正确配置Jest处理TypeScript

方式一:通过初始化命令生成配置

现在已安装typescript,重新执行Jest初始化:
yarn jest --init
生成jest.config.js后,确保文件中包含以下关键配置:

module.exports = {
  // 其他保留配置
  transform: {
    '^.+\\.tsx?$': 'ts-jest', // 用ts-jest编译TypeScript文件
  },
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], // 让Jest识别ts/tsx后缀文件
};

方式二:手动修改现有配置

如果已经有jest.config.js,直接添加上述transform和moduleFileExtensions配置项即可。

4. 验证测试运行

重新执行测试命令:
yarn jest
此时应该能正常处理TypeScript测试文件。

关于最初的SyntaxError: Cannot use import statement outside a module错误,本质是Jest默认适配CommonJS模块,若你的TypeScript配置输出ES模块就会触发该问题。将tsconfig.json的module设为CommonJS是最直接的解决方式;若必须使用ES模块,需在jest.config.js中添加extensionsToTreatAsEsm: ['.ts'],同时在package.json中设置"type": "module",但这种配置复杂度更高,推荐先采用CommonJS模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:30:49