Vitest coverage issue `vite:import-analysis` error `Pre-transform error: Failed to resolve import "#/util" from "src/app/app.ts". Does the file exist?`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- playwright, typescript
- Domaine
- testing-qa
Piste de recherche
Commencez par reproduire l’échec avec le projet Angular indiqué, l’alias de chemin de tsconfig.json, l’import de src/app/app.ts et la commande ng test, en comparant Vitest 4.1.0 à 4.0.8. Suivez la génération de la coverage et la gestion des source maps lorsque le chunk partagé de l’application fait référence à l’alias. C’est terminé lorsque la coverage du navigateur s’achève sans erreurs vite:import-analysis pendant que l’alias est résolu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
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
vitest@4.0.8
Description
I'm not sure if this issue is an issue with Vitest, or the Angular CLI integration with Vitest. I put the issue here, because I have no idea how to reproduce this issue without Angular at the moment.
The issue is that when using tsconfig.json property paths and running browser tests with coverage, these paths will not used when Vitest tries to read coverage from source maps. The requirement seems to be that a shared chunk exists (import './app' in the repro steps).
This results in errors during coverage generation, but tests do not crash. The errors come from Vite's dev server pre transforming original .ts files referenced in source-maps.
Requirements
- Using
pathsintsconfig.json - Angular CLI +
eslintcreates a shared chunk that has thepathsin it's sourcemap - Vitest with
browsers+coverage+coverageInclude - Vitest
v4.1.0+
Minimal Reproduction
- Init Angular project & install vitest coverage & browser packages
npx @angular/cli@21.1.5 new ng21.1.5 -s -t --style css --no-ssr --ai-config none
npm i -E -D vitest@4.1.0 @vitest/browser-playwright@4.1.0 @vitest/coverage-v8@4.1.0 playwright
- Add
src/app/util.tsfile
export const greet = 'Hello';
- Add a path alias to util file
{
"compilerOptions": {
"paths": {
"#/util": ["./src/app/util.ts"]
}
}
}
- Make
App(app.ts) use value fromutil.ts
import { greet } from '#/util';
// ...
export class App {
protected readonly title = signal(greet);
}
- Add import to
app.tsfromapp.config.ts
import './app';
- Run tests with browser, coverage & coverage include
npx ng test --no-watch --browsers chromium --coverage --coverage-include src/app/**/*.ts
Exception or Error
There's logged errors for every file that uses the path alias, which in our project is most of them (e.g. `import { shared } from '#/core';`).
00:02:12 [vite] (client) Pre-transform error: Failed to resolve import "#/util" from "src/app/app.ts". Does the file exist?
Plugin: vite:import-analysis
File: C:/Users/foo/repro/src/app/app.ts:3:22
11 | import { Component, signal } from "@angular/core";
12 | import { RouterOutlet } from "@angular/router";
13 | import { greet } from "#/util";
| ^
14 | export let App = class {
15 | title = signal(greet);
Your Environment
I've tried with `@angular/build` + `@angular/cli` at several versions, including `21.1.x` and `21.2.x`. Downgrading `vitest` to `4.0.8` fixes the issue, but `vitest@4.1.0` and `4.1.2` both failed.
----------------------------------------
Angular CLI : 21.2.5
Angular : 21.2.6
Node.js : 25.8.2 (Unsupported)
Package Manager : npm 11.11.1
Operating System : win32 x64
┌───────────────────────────┬───────────────────┬───────────────────┐
│ Package │ Installed Version │ Requested Version │
├───────────────────────────┼───────────────────┼───────────────────┤
│ @angular/build │ 21.2.5 │ ^21.1.5 │
│ @angular/cli │ 21.2.5 │ ^21.1.5 │
│ @angular/common │ 21.2.6 │ ^21.1.0 │
│ @angular/compiler │ 21.2.6 │ ^21.1.0 │
│ @angular/compiler-cli │ 21.2.6 │ ^21.1.0 │
│ @angular/core │ 21.2.6 │ ^21.1.0 │
│ @angular/forms │ 21.2.6 │ ^21.1.0 │
│ @angular/platform-browser │ 21.2.6 │ ^21.1.0 │
│ @angular/router │ 21.2.6 │ ^21.1.0 │
│ rxjs │ 7.8.2 │ ~7.8.0 │
│ typescript │ 5.9.3 │ ~5.9.2 │
│ vitest │ 4.1.0 │ 4.1.0 │
└───────────────────────────┴───────────────────┴───────────────────┘
Anything else relevant?
Does not seem to be OS specific. The issue is on GitHub Actions on Ubuntu, and locally on Windows.
- Langage dominant
- TypeScript
- Étoiles
- 27k
- Forks
- 11.8k
- Merge moyen
- 17 h 25 min
- PR mergées (30 j)
- 183
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de angular/angular-cli
-
Can't use an array of hostnames in --allowedHosts cli parameter in @angular/build:dev-server Ouvertearea: @angular/build gemini-triaged
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
angular/angular-cli#33955 ·
-
area: @angular/cli gemini-triaged
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
angular/angular-cli#33055 · 1 commentaire · 3 réactions ·
-
angular/build:library area: @angular/build gemini-triaged
angular/angular-cli#34131 · 1 personne assignée ·
-
angular/build:library area: @angular/build gemini-triaged
angular/angular-cli#34130 · 1 personne assignée ·
-
angular/build:library area: @angular/build gemini-triaged
angular/angular-cli#34128 · 1 personne assignée ·
Toutes les issues de angular/angular-cli
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
safetrustcr/dApp-SafeTrust#426 ·
-
area:workflow bug ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
fil-donadoni/tolaria#4409 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Fission-AI/OpenSpec#1960 ·
-
Add dependabot Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
corsairdev/corsair#1764 ·