使用 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 中,module
是 es2015
但我也尝试过 system
和 commonjs
)
@angular/compiler-cli 0.6.3
、systemjs-builder 0.15.31
、systemjs 0.19.39
我花了很长时间跟踪这个问题 - 加载 angular 模块的 umd 包会导致这个错误。更改为在他们的文件夹中加载 index.js 文件。
我使用 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 中,module
是 es2015
但我也尝试过 system
和 commonjs
)
@angular/compiler-cli 0.6.3
、systemjs-builder 0.15.31
、systemjs 0.19.39
我花了很长时间跟踪这个问题 - 加载 angular 模块的 umd 包会导致这个错误。更改为在他们的文件夹中加载 index.js 文件。