Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

angular-query: migrate-from-experimental schematic crashes with 'Path ... is a file' on a .js subpath import

Fermée
#12,032 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@benjavicente y travaille déjà.

Depuis le 16/10/2026.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
angular, typescript
Domaine
devtools

Piste de recherche

The crash comes from the compiler host built in configuredSources() in packages/angular-query/schematics/migrate-from-experimental/workspace.ts, where directoryExists calls tree.getDir(path) on paths that can be files. Read that host and how the devkit Tree reports files versus directories, then reproduce with the linked repro and a source importing a .js subpath such as @noble/hashes/sha3.js. Done means the dry run lists the expected UPDATE entries instead of throwing, with a regression test in the schematic's test suite. The reporter says they plan to open the PR themselves, so confirm with them before starting.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Describe the bug

The migrate-from-experimental schematic in @tanstack/[email protected] aborts before migrating anything when a project source imports a package subpath that names a file, such as import { sha3_256 } from '@noble/hashes/sha3.js':

Path "/node_modules/@noble/hashes/sha3.js" is a file.

The cause is the compiler host built in configuredSources() (packages/angular-query/schematics/migrate-from-experimental/workspace.ts). Its directoryExists calls tree.getDir(path) directly. TypeScript's module resolution probes candidate paths with directoryExists, and some of them are files. The devkit Tree.getDir() then throws PathIsFileException rather than reporting that no directory exists.

Your minimal, reproducible example

https://github.com/imaksp/tanstack-angular-query-migrate-schematic-repro

Steps to reproduce
  1. Clone the repro and run pnpm install.
  2. Run pnpm exec ng generate @tanstack/angular-query:migrate-from-experimental --dry-run.
  3. See Path "/node_modules/@noble/hashes/sha3.js" is a file.

It also reproduces with an npm-style flat layout (pnpm install --config.node-linker=hoisted). Removing the @noble/hashes/sha3.js import makes the dry run succeed.

Expected behavior

The schematic migrates the workspace: the dry run lists UPDATE src/main.ts and UPDATE package.json. Instead it throws, and none of the project's files are migrated. In a real workspace, every file is skipped as soon as one source imports such a subpath.

How often does this bug happen?

Every time

Platform
  • OS: macOS 26
  • Node: 26.8.2
  • pnpm: 12.9.1
  • Angular CLI: 22.2.1
Tanstack Query adapter

angular-query

TanStack Query version

5.0.0-rc.3

TypeScript version

6.0.3

Additional context

Making directoryExists return false for a path that is a file fixes it. tree.exists() is true only for files:

host.directoryExists = (path) => {
  if (tree.exists(path)) return false
  const directory = tree.getDir(path)
  return directory.subfiles.length > 0 || directory.subdirs.length > 0
}

With that change the repro's dry run succeeds. I'll open a PR with the fix and a regression test.

Langage dominant
TypeScript
Étoiles
50.5k
Forks
4.2k
Merge moyen
9 h 34 min
PR mergées (30 j)
603

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de TanStack/query

Toutes les issues de TanStack/query

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.