在使用Vitest测试Angular库(v21)时,出现错误:“在此配置下,Angular需要Zone.js。”

前端开发 2026-07-08

我在用Vitest测试我的Angular库组件(v21)时,收到错误信息 Error: In this configuration Angular requires Zone.js。与我的应用不同,应用有一个 polyfills 的部分,我不确定如何将zone.js纳入编译。

我的 angular.json 当前看起来是这样的:

// ...
"test": {
  "builder": "@angular/build:unit-test",
  "options": {
    "providersFile": "libs/shared/test-util/global-providers.ts",
    "browsers": ["edge"]
  }
// ...

解决方案

根据文档(https://angular.dev/guide/testing/migrating-to-vitest),“@angular/build:karma 构建器以前允许在 test 目标内直接配置构建选项(例如 polyfillsassetsstyles)。新的 @angular/build:unit-test 构建器不再支持此项[...]”

对于新的unit-test-builder,然而,有一个 setupFiles-section:

"test": {
  "builder": "@angular/build:unit-test",
  "options": {
    "providersFile": "libs/shared/test-util/global-providers.ts",
    "browsers": ["edge"],
    "setupFiles": ["libs/shared/test-util/setup.ts"]
  }

在这个文件中,我导入了zone.js:

import 'zone.js';

最后,确保在编译中包含了设置文件(tsconfig.spec.json):

"include": [
    //...
    "test-util/global-providers.ts",
    "test-util/setup.ts"
  ]

就这样,错误消失了!

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章