将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
相关产品推荐
相关产品推荐

