我已经使用 angular.io 上的提前编译指令编译了用 typescript 2
编写的 Angular 2
应用程序。 。
main.ts
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
现在我有很多 ngfactory.ts
文件以及 .js
文件。为了进行 tree-shake 和捆绑,我使用简单的 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 - 使用 SystemJS-builder 捆绑 Angular 2 提前编译器文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39941680/