Angular项目运行Jest测试时遇TypeError: configSet.processWithEsbuild is not a function
解决Angular 17 + Jest 29测试时
TypeError: configSet.processWithEsbuild is not a function错误 错误原因
该错误源于两个核心问题:
jest-preset-angular版本与Angular 17、Jest 29不兼容,未提供适配Esbuild的转换逻辑- 自定义的
transform配置(使用ts-jest)与jest-preset-angular内置的转换器冲突,覆盖了Esbuild相关处理逻辑
解决步骤
1. 安装适配版本的jest-preset-angular
Angular 17需要搭配jest-preset-angular v14.x版本(完全兼容Jest 29),执行以下命令安装:
npm install jest-preset-angular@14.1.1 --save-dev # yarn用户执行:yarn add jest-preset-angular@14.1.1 --dev
2. 修正jest.config.js配置
移除自定义的transform字段——jest-preset-angular的预设已经内置了适配Angular 17和Esbuild的转换规则,无需额外指定ts-jest。修改后的配置如下:
module.exports = { preset: 'jest-preset-angular', setupFilesAfterEnv: ['<rootDir>/src/setup.jest.ts'], testEnvironment: 'jsdom', moduleFileExtensions: ['ts', 'html', 'js', 'json'], moduleNameMapper: { '@app/(.*)': '<rootDir>/src/app/$1', '@env/(.*)': '<rootDir>/src/environments/$1' } };
3. 重置依赖(可选)
为确保依赖版本完全一致,可清理现有依赖后重新安装:
rm -rf node_modules package-lock.json npm install
4. 验证修复
运行测试命令确认错误解决:
npm run test
内容的提问来源于stack exchange,提问作者Baisakhi Panda
相关产品推荐
相关产品推荐

