Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Angular Schematics - Apply thousands of changes on tree cause error "Maximum call stack size exceeded"

Ouverte
#17,851 1 commentaire 3 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
angular, typescript
Domaine
cli, tooling

Piste de recherche

Commencez au point d’entrée createPageComponents de la reproduction, en particulier avec le tableau rules et chain(rules), et reproduisez l’échec avec plus de 1 000 règles Schematics. Lisez le chemin d’exécution d’Angular Schematics avec la trace de pile RxJS présentée dans le rapport. C’est terminé lorsque le grand ensemble de modifications des composants de page peut être appliqué sans erreur de maximum call stack.

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

Description

area: @angular-devkit/schematics freq1: low severity3: broken type: bug/fix

🐞 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
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.