incorrect detection of zoneless app

オープン
#30,689 コメント 10 件 リアクション 4 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
52/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
angular, typescript
領域
build-system, cli

調査の方向性

packages/angular/build/src/tools/esbuild/utils.ts の469-478行目から始め、次に polyfills 配列に JavaScript または TypeScript ファイルを指定し、zone.js が利用できない状態で build コマンドを実行します。zoneless アプリが誤って non-zoneless と検出されず、ファイルベースの polyfill が引き続き機能すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
TypeScript
スター
27k
フォーク
11.8k
平均マージ
16時間 35分
マージ済み PR(30日)
176

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

angular/angular-cli のほかの issue

angular/angular-cli の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。