Repository navigation
@angular/build:unit-test with Vitest test runner throws Failed to import test file error #31993
Copy link
Copy link
Labels
angular/build:unit-testarea: @angular/buildfreq1: lowOnly reported by a handful of users who observe it rarelyOnly reported by a handful of users who observe it rarelyseverity3: brokentype: bug/fix
Description
Command
test
Is this a regression?
- Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was
No response
Description
Steps to reproduce:
- Create a
TestServicethat will contain a single propertyrouter = inject(Router) - Configure
@angular/build:unit-testrunner to includeprovidersFile - Export
[TestService]from it - Create a
Testcomponent that will inject this service:service = inject(TestService)
ng test will fail with the following error for all specs:
FAIL project (chromium) path/to/some.spec.ts [ path/to/some.spec.ts ]
Error: Failed to import test file /project/root/init-testbed.js
Caused by: Error: The injectable '_PlatformLocation' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.
The injectable is part of a library that has been partially compiled.
However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.
Ideally, the library is processed using the Angular Linker to become fully AOT compiled.
Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server',
or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.
❯ <static_initializer> node_modules/.vite/vitest/dc540563f7f56f2cac74b38788615874d1da1c10/deps/chunk-42LDSDVL.js?v=049c4943:83:17
If you remove injection of the TestService from the Test component all the specs will start to pass.
Minimal Reproduction
https://github.com/th0r/ng-vitest-test-providers-bug
Your Environment
Angular CLI : 21.0.1
Angular : 21.0.2
Node.js : 24.8.0
Package Manager : npm 11.6.0
Operating System : darwin arm64
┌───────────────────────────┬───────────────────┬───────────────────┐
│ Package │ Installed Version │ Requested Version │
├───────────────────────────┼───────────────────┼───────────────────┤
│ @angular/build │ 21.0.1 │ ^21.0.1 │
│ @angular/cli │ 21.0.1 │ ^21.0.1 │
│ @angular/common │ 21.0.2 │ ^21.0.0 │
│ @angular/compiler │ 21.0.2 │ ^21.0.0 │
│ @angular/compiler-cli │ 21.0.2 │ ^21.0.0 │
│ @angular/core │ 21.0.2 │ ^21.0.0 │
│ @angular/forms │ 21.0.2 │ ^21.0.0 │
│ @angular/platform-browser │ 21.0.2 │ ^21.0.0 │
│ @angular/router │ 21.0.2 │ ^21.0.0 │
│ rxjs │ 7.8.2 │ ~7.8.0 │
│ typescript │ 5.9.3 │ ~5.9.2 │
│ vitest │ 4.0.14 │ ^4.0.8 │
└───────────────────────────┴───────────────────┴───────────────────┘
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
angular/build:unit-testarea: @angular/buildfreq1: lowOnly reported by a handful of users who observe it rarelyOnly reported by a handful of users who observe it rarelyseverity3: brokentype: bug/fix
Activity
th0r commentedon Dec 18, 2025
@alan-agius4 is there any information on when this bug can be expected to be fixed? Thanks!
sqrter commentedon Jan 3, 2026
I'm not sure if it helps, but in my case, adding
setupFiles: ['./test-setup.ts']with just one lineimport "@angular/compiler";into myvite.config.mtssolved a similar error.fix(@angular/build): add @angular/compiler to ensure the JIT compiler…
mistrykaran91 commentedon Jan 15, 2026
I have taken opportunity to fix this issue, PR #32304 for the same.
dcendents commentedon Feb 10, 2026
@mistrykaran91 thanks your PR fixed it for me.
For anybody else that can't wait for the PR, here is the patch file to apply using patch-package: https://www.npmjs.com/package/patch-package
@angular+build+21.1.3.patchdsebata commentedon Mar 9, 2026
based on @mistrykaran91's PR I was able to resolve this by adding
@angular/compilerto test polyfills inangular.json. At least for now till the PR makes it to production{ "projects": { "my-project": { "architect": { "build": { "configurations": { "unit-tests": { "polyfills": ["@angular/compiler"] } } }, "test": { "builder": "@angular/build:unit-test", "options": { "buildTarget": "my-project:build:unit-tests" } } } } } }dbPietah commentedon May 13, 2026
Confirming that @dsebata 's solution fixes the issue.
Release/1.9.0 (#707)
Release/1.10.0 (#715)
Release/1.11.0 (#722)
Release/1.11.1 (#727)
Upgrade Angular framework to v22 (#271)