Angular Schematics - Apply thousands of changes on tree cause error "Maximum call stack size exceeded"
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- angular, typescript
Hướng nghiên cứu
Bắt đầu tại điểm vào createPageComponents trong bản tái hiện, đặc biệt là mảng rules và chain(rules), rồi tái hiện lỗi với hơn 1.000 quy tắc Schematics. Đọc đường dẫn thực thi của Angular Schematics cùng với stack trace của RxJS được hiển thị trong báo cáo. Hoàn thành khi có thể áp dụng tập hợp lớn các thay đổi đối với page component mà không gặp lỗi maximum call stack.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
🐞 Bug report
Description
I use Angular Schematics to migrate from AngularJs to Angular. The application is a large one with thousands of page. I try to create a component for each page based on a template. When I try to create the component on a smaller project like 200 pages it's working but when I fall on a large one with more than 1000 pages (1000 schematics rules)
🔬 Minimal Reproduction
export function createPageComponents(options: any): Rule {
return (tree: Tree, context: SchematicContext) => {
const logger = context.logger;
const directory = tree.getDir('my_path/pages');
const rules: Rule[] = [];
directory.visit((filePath) => {
if (!filePath.endsWith('config.ts')) {
return;
}
const dirPath = dirname(filePath);
const parsedPath = parseName(dirPath, basename(filePath).split('.')[0]);
options = {
path: parsedPath.path,
name: parsedPath.name
};
const templateSource = apply(
url('./files'),
[
applyTemplates({
...strings,
...options
}),
move(parsedPath.path)
]
);
const rule = mergeWith(templateSource);
rules.push(rule);
});
return chain(rules);
};
}
🔥 Exception or Error
RangeError: Maximum call stack size exceeded
at Console.warn ()
at Observable._trySubscribe (my_path\node_modules\rxjs\internal\Observable.js:55:25)
at Observable.subscribe (my_path\node_modules\rxjs\internal\Observable.js:30:22)
at MergeMapOperator.call (my_path\node_modules\rxjs\internal\operators\mergeMap.js:39:23)
at Observable.subscribe (my_path\node_modules\rxjs\internal\Observable.js:25:31)
at MapOperator.call (my_path\node_modules\rxjs\internal\operators\map.js:32:23)
at Observable.subscribe (my_path\node_modules\rxjs\internal\Observable.js:25:31)
at MapToOperator.call (my_path\node_modules\rxjs\internal\operators\mapTo.js:26:23)
at Observable.subscribe (my_path\node_modules\rxjs\internal\Observable.js:25:31)
at DefaultIfEmptyOperator.call (my_path\node_modules\rxjs\internal\operators\defaultIfEmpty.js:27:23)
🌍 Your Environment
Angular CLI: 9.1.4
Node: 10.19.0
OS: win32 x64
Angular: 9.1.4
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes
Package Version
------------------------------------------------------------
@angular-devkit/architect 0.901.4
@angular-devkit/build-angular 0.901.4
@angular-devkit/build-ng-packagr 0.901.4
@angular-devkit/build-optimizer 0.901.4
@angular-devkit/build-webpack 0.901.4
@angular-devkit/core 9.1.4
@angular-devkit/schematics 9.1.7
@angular-devkit/schematics-cli 0.901.7
@angular/upgrade 9.1.9
@ngtools/webpack 9.1.4
@schematics/angular 9.1.4 (cli-only)
@schematics/schematics 0.901.7
@schematics/update 0.901.4
ng-packagr 9.1.3
rxjs 6.5.5
typescript 3.8.3
webpack 4.42.0
- Ngôn ngữ chính
- TypeScript
- Star
- 27k
- Fork
- 11.8k
- Merge trung bình
- 16 giờ 35 phút
- Pull request đã merge (30 ngày)
- 176
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của angular/angular-cli
-
Can't use an array of hostnames in --allowedHosts cli parameter in @angular/build:dev-server Đang mởarea: @angular/build gemini-triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
angular/angular-cli#33955 ·
-
area: @angular/cli gemini-triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
angular/angular-cli#33055 · 1 bình luận · 3 reaction ·
-
unit-test: with --coverage, a setup file's hooks reach only the first spec file of each worker Đang mởarea: @angular/build gemini-triaged
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 72/100
angular/angular-cli#34137 ·
-
angular/build:library area: @angular/build gemini-triaged
angular/angular-cli#34131 · 1 người được giao ·
-
angular/build:library area: @angular/build gemini-triaged
angular/angular-cli#34130 · 1 người được giao ·
Tất cả issue của angular/angular-cli
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
ontola/atomic-server#1625 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
melgarafael/DeskcommCRM#1451 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
-
bug via-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
bot:ai-assisted component:compact-js status:untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
midnightntwrk/midnight-sdk#403 ·