angular / angular/angular-cli

Angular never searches for zone.js in the correct path

オープン
#27,473 コメント 8 件 リアクション 0 件 担当者 0 名 GitHub で見る
angular/build:application area: @angular/build type: bug/fix
主要言語
TypeScript
スター
27k
フォーク
11.8k
平均マージ
14時間 23分
マージ済み PR(30日)
162

説明

### Command

build

### Is this a regression?

- [X] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

_No response_

### Description

I have a monorepo, one of its workspaces is an Angular workspace. and I use pnpm to install the dependencies
each workspace has its own node_modules folder.

when I start building this app (the Angular workspace), it fails to find zone.js
it should find it inside node_modules of the Angular app

this debug info may be useful
as you can see it looks in:
- dibo/node_modules/zone.js (the monorepo's top-level root)
- dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js

but never looks in the correct path which is dibo/apps/mobarmegeen/mobarmegeen-ui/node_modules/zone.js

debug info

```
[DEBUG] Resolving import "zone.js/node" in directory "/home/dibo/dev/@its-dibo/dibo" of type "import-statement"

Checking for package alias matches
Failed to find any package alias matches
Read 25 entries for directory "/"
Read 1 entry for directory "/home"
Read 25 entries for directory "/home/dibo"
Read 4 entries for directory "/home/dibo/dev"
Read 3 entries for directory "/home/dibo/dev/@its-dibo"
The file "/home/dibo/dev/@its-dibo/dibo/package.json" exists
Read 40 entries for directory "/home/dibo/dev/@its-dibo/dibo"
Read 40 entries for directory "/home/dibo/dev/@its-dibo/dibo"
Searching for "zone.js/node" in "node_modules" directories starting from "/home/dibo/dev/@its-dibo/dibo"
Matching "zone.js/node" against "paths" in
"/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/tsconfig.app.json"
Using "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui" as "baseURL"
Attempting to load "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js/node" as a file
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js": open
/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js: no such file or directory
Attempting to load "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js/node" as a directory
Read 40 entries for directory "/home/dibo/dev/@its-dibo/dibo"
Read 2 entries for directory "/home/dibo/dev/@its-dibo/dibo/apps"
Read 2 entries for directory "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen"
The file "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/package.json" exists
Read 16 entries for directory "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui"
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js": open
/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js: no such file or directory
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js"
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/apps/mobarmegeen/mobarmegeen-ui/zone.js/node"
Parsed package name "zone.js" and package subpath "./node"
Checking for a package in the directory "/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js/node"
Read 40 entries for directory "/home/dibo/dev/@its-dibo/dibo"
Read 76 entries for directory "/home/dibo/dev/@its-dibo/dibo/node_modules"
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js": open
/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js: no such file or directory
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js"
Attempting to load "/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js/node" as a file
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js": open
/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js: no such file or directory
Attempting to load "/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js/node" as a directory
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js"
Failed to read directory "/home/dibo/dev/@its-dibo/dibo/node_modules/zone.js/node"

✘ [ERROR] Could not resolve "zone.js/node"

angular:polyfills-server:angular:polyfills-server:1:7:
1 │ import 'zone.js/node';
╵ ~~~~~~~~~~~~~~

You can mark the path "zone.js/node" as external to exclude it from the bundle, which will remove
this error and leave the unresolved path in the bundle.
```

### Minimal Reproduction
https://github.com/its-dibo/issue-zonejs

1- install via pnpm `pnpm install`
if pnpm is not installed, simply, run `npm I -g pnpm`

2- run the app `npm start`

note: don't use any other package manager, as they hoist the packages of the app to the root of the monorepo.
.

### Exception or Error

_No response_

### Your Environment

```text
Angular CLI: 17.0.3
Node: 20.10.0
Package Manager: yarn 1.22.22
OS: linux x64

Angular: undefined
...

Package Version
------------------------------------------------------
@angular-devkit/architect 0.1700.3 (cli-only)
@angular-devkit/core 17.0.3 (cli-only)
@angular-devkit/schematics 17.0.3 (cli-only)
@schematics/angular 17.0.3 (cli-only)
rxjs
```
```

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

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

調査の方向性

リンクされたリポジトリで、pnpm install の後に npm start を実行して失敗を再現します。まず workspace package.json と tsconfig.app.json を読み、次に zone.js/node の angular:polyfills-server インポートを追跡します。ビルドが monorepo のルートまたは workspace のソースパスだけを確認するのではなく、workspace の node_modules から zone.js を解決できれば完了です。

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

評価

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

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

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