Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#17,851 1 comentario 3 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
angular, typescript
Área
cli, tooling

Línea de trabajo

Comienza en el punto de entrada createPageComponents de la reproducción, especialmente en el array rules y chain(rules), y reproduce el fallo con más de 1.000 reglas de Schematics. Lee la ruta de ejecución de Angular Schematics junto con el stack trace de RxJS mostrado en el informe. Se considera terminado cuando se puede aplicar el gran conjunto de cambios de componentes de página sin un error de maximum call stack.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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
Lenguaje dominante
TypeScript
Estrellas
27k
Forks
11.8k
Merge medio
16 h 35 min
PR fusionados (30 d)
176

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de angular/angular-cli

Todos los issues de angular/angular-cli

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.