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

Angular 13升级后Jest报错:无法找到@angular/core/testing模块

解决方案

1. 升级jest-preset-angular到适配Angular 13的版本

你当前使用的jest-preset-angular@12.2.0仅适配Angular 12,与Angular 13不兼容,需升级到13.x系列稳定版本:

npm install jest-preset-angular@13 --save-dev

2. 对齐Angular生态依赖版本

@angular/cdk和@angular/material仍停留在12.x版本,与其他Angular 13包版本冲突,需同步升级:

npm install @angular/cdk@13 @angular/material@13 --save-dev

3. 升级Jest及配套依赖

Angular 13需要更高版本的Jest和ts-jest配合,当前版本过低,需升级到适配jest-preset-angular@13的版本:

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

4. 调整jest.setup.ts导入顺序

按照官方要求调整导入顺序,确保jest预设先加载:

import 'jest-preset-angular/setup-jest';
import 'zone.js';
import 'zone.js/testing';

5. 优化jest.config.js配置

合并重复的transformIgnorePatterns规则,避免依赖转换冲突:

module.exports = {
    preset: 'jest-preset-angular',
    moduleFileExtensions: ['ts', 'html', 'js', 'json', 'mjs'],
    snapshotSerializers: [],
    roots: ['src'],
    moduleNameMapper: {
        '^lodash-es$': '<rootDir>/node_modules/lodash/index.js'
    },
    setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
    testMatch: ['<rootDir>/src/**/*.spec.ts'],
    transform: {
        '^.+\\.ts$': 'ts-jest',
        '^.+\\.mjs$': 'ts-jest',
    },
    transformIgnorePatterns: ['node_modules/(?!(@angular|lodash-es)/)'],
    coveragePathIgnorePatterns: ['<rootDir>/node_modules/'],
    coverageReporters: ['json', 'text', 'html', 'cobertura'],
    reporters: ['default', ['jest-junit', { outputDirectory: 'TestResults', outputName: 'jest-junit.xml' }]],
};

6. 清理依赖缓存并重装

删除旧依赖和锁文件,确保所有版本完全对齐:

rm -rf node_modules package-lock.json
npm install

问题根源

低版本的jest-preset-angular会按照Angular 12的模块结构查找@angular/core/testing,而Angular 13的包结构存在变化,同时依赖版本不匹配导致模块解析路径混乱,最终触发找不到模块的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 00:54:12