angularjs - Angular Schematics - 在树上应用数以千计的更改导致错误超出最大调用堆栈大小

标签 angularjs angular angular-schematics

我尝试将一个大型 AngularJs 项目迁移到 Angular。我发现 Angular Schematics 是自动执行某些任务的好方法。

我的第一个任务是为每个文件夹创建组件,我有大约 1200 个组件要创建。

我的函数是这样的:

return (tree: Tree, _context: SchematicContext) => {
    const directory = tree.getDir('my_path/pages');

    const rules: Rule[] = [];
    directory.visit((filePath) => {
        if (!filePath.endsWith('config.ts')) {
            return;
        }

        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);
};

所以我最终将 1200 条规则链接到我的树,这导致了错误 Maximum call stack size exceeded。 如何有效地应用基于模型的组件创建?

*该代码适用于较小的项目,例如创建 200 个组件。

我在 Github repo of Angular-Cli 上创建了一个问题

最佳答案

由于 API 接受 Promise,您可以使用异步规则解决此错误:

return chain(rules.map(rule => () => Promise.resolve(rule)));

关于angularjs - Angular Schematics - 在树上应用数以千计的更改导致错误超出最大调用堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62172556/

相关文章:

css - 空样式 (.css/.scss) 文件

angularjs - Angular 证书验证

typescript - Mapbox typescript

angular-cli 自定义原理图/集合

angular - NPM 5.0.1 更新后 ng 服务错误 : Invalid Version:

javascript - 为什么已经创建的元素会继承新元素的样式(在 Angular 中的 ngFor 上)?

Angular 6 Schematics 无效源(未定义)

angularjs - Angular 中为自定义指令保留的命名空间?

javascript - 无法从状态 'javascript:;' 解析 'app'

ruby-on-rails - Angular $http 和 Rails 4 参数