angular / angular/angular-cli

Angular never searches for zone.js in the correct path

未關閉
#27,473 8 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
angular/build:application area: @angular/build type: bug/fix
主要語言
TypeScript
星號
27k
分支
11.8k
平均合併
14 小時 23 分鐘
30 天內合併 PR
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 匯入。當建置從 workspace 的 node_modules 解析 zone.js,而不是只檢查 monorepo 根目錄或 workspace 原始碼路徑時,即表示完成。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
angular, typescript
領域
build-system, cli
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。