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

升级Angular v13后执行ng test出现Jest报错Cannot set base providers如何解决

报错修复方案

错误原因

该报错是jest-preset-angular的初始化逻辑被重复触发导致的,Angular 13默认采用ESM模块化规范后,若Jest配置存在多入口加载setup-jest的逻辑就会触发该问题。

修复步骤

  • 首先检查Jest配置文件(jest.config.js/jest.config.ts)中的setupFilesAfterEnv配置项,确认是否存在重复引入jest-preset-angular/setup-jest的情况,去掉重复的引入语句,仅保留1次即可。
  • 若你在单个测试文件中手动写了import 'jest-preset-angular/setup-jest',全部删除,统一走Jest全局配置的初始化入口。
  • 检查是否同时配置了preset: 'jest-preset-angular'和手动引入setup-jest的情况,部分版本的jest-preset-angular preset会默认加载初始化逻辑,此时可删除手动引入的setup-jest语句后重试。
  • 若上述操作无效,可在setupFilesAfterEnv的初始化代码最顶部添加如下逻辑,覆盖重复初始化的校验:
// @ts-ignore
globalThis.ngJest = globalThis.ngJest || {
  ngZone: 'noop',
  teardown: { destroyAfterEach: true },
  skipBaseProviderSetup: true
};
import 'jest-preset-angular/setup-jest';
  • 最后检查jest-preset-angular的版本是否和Angular 13适配,Angular 13对应的jest-preset-angular版本范围为11.x~12.x,版本不匹配时先升级/降级到适配版本后重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:08