使用 SystemJS-builder 捆绑 Angular 2 个提前编译器文件

Use SystemJS-builder to bundle Angular 2 Ahead-of-Time Compiler files

我使用 angular.io 上的 提前编译 指令编译了 Angular 2 中用 typescript 2 编写的应用程序。

main.ts

platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);

现在我有很多 ngfactory.ts 个文件以及 .js 个文件。为了摇树和捆绑,我使用下面的简单 systemjs-builder 任务:

gulp.task('demo-bundle', function() {
    var builder = new SystemBuilder();

    builder.loadConfig('./systemjs.config.js')
        .then(function(){
            return builder.buildStatic('dev/main.js', 'dist/bundle.js', {
                encodeNames:false,
                mangle: false,
                rollup: true
            });
        })
});

捆绑完成且没有错误,但应用程序在浏览器中失败并出现错误:

Error: No provider for NgZone!

如果我通过引导从提前编译更改为即时编译:

platformBrowserDynamic().bootstrapModule(AppModule);

然后捆绑和应用程序按预期工作。

关于如何将 AoT 编译与 buildStatic 正确捆绑的任何想法? (在 tsconfig 中,modulees2015 但我也尝试过 systemcommonjs

@angular/compiler-cli 0.6.3systemjs-builder 0.15.31systemjs 0.19.39

我花了很长时间跟踪这个问题 - 加载 angular 模块的 umd 包会导致这个错误。更改为在他们的文件夹中加载 index.js 文件。