incorrect detection of zoneless app

Ouverte
#30,689 10 commentaires 4 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
52/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
angular, typescript
Domaine
build-system, cli

Piste de recherche

Commencez dans packages/angular/build/src/tools/esbuild/utils.ts aux lignes 469-478, puis exécutez la commande de build avec un fichier JavaScript ou TypeScript dans le tableau polyfills et zone.js indisponible. C’est terminé lorsqu’une application zoneless n’est pas incorrectement détectée comme non-zoneless et que le polyfill basé sur un fichier fonctionne toujours.

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

Description

angular/build:application area: @angular/build freq1: low severity3: broken type: bug/fix
Command

build

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

Including any js/ts file in the polyfills array causes the angular server to incorrectly identify the app as a non-zoneless app. Thus it tries to include zone.js, which is deleted, because I uninstall the package as per the guide.

Minimal Reproduction
Exception or Error

Your Environment
Angular CLI: 20.1.0
Node: 22.14.0
Package Manager: pnpm 10.13.1
OS: linux x64

Angular: 20.1.0
... animations, build, cdk, cli, common, compiler, compiler-cli
... core, forms, language-service, material
... material-luxon-adapter, platform-browser
... platform-browser-dynamic, platform-server, router, ssr

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.2001.0
@angular-devkit/build-angular   20.1.0
@angular-devkit/core            20.1.0
@angular-devkit/schematics      20.1.0
@schematics/angular             20.0.6
ng-packagr                      20.0.1
rxjs                            7.8.1
typescript                      5.8.3
Anything else relevant?
TLDR

This is essentially a re-open of #28898. Developers are forced to avoid adding any js/ts file to the polyfills array. Instead, they have to create js scripts inline inside index.html, or write js files, and include them as assets with index.html


The problem is within these lines:
https://github.com/angular/angular-cli/blob/2c3a46b9ecf69049fbddb2c912636d9d62e197df/packages/angular/build/src/tools/esbuild/utils.ts#L469-L478

The presence of any js/ts file in the polyfills array causes zone to be included, even though I uninstalled zone.js and do everything zone-less-ly.

I had a file called polyfill-buffer.ts which I used to add to the polyfill array:

import { Buffer } from 'buffer';

if (!globalThis.Buffer) {
  Object.assign(globalThis, { Buffer });
}

Now I have to add it to index.html as a script

import { Buffer } from 'https://cdn.jsdelivr.net/npm/buffer/+esm';

if (!globalThis.Buffer) {
  Object.assign(globalThis, { Buffer });
}

This is maintainable for small scripts like these. But it eliminates the possibility of using any file-based polyfill stuff.

Langage dominant
TypeScript
Étoiles
27k
Forks
11.8k
Merge moyen
16 h 35 min
PR mergées (30 j)
176

Guide de contribution

Ouvrir le guide de contribution

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 angular/angular-cli

Toutes les issues de angular/angular-cli

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.