SystemJS Builder,没有Angular2的Bundle for Lazyloading

时间:2016-07-15 09:59:41

标签: angular lazy-loading systemjs

我正在尝试将我的应用程序与systemjs builder捆绑在一起。它是一个“核心”应用程序,其中包含angular2。然后其他组件懒洋洋地加载到核心中。目前Iam捆绑了我的核心,它可以工作,但其他组件然后得到404,因为他们正在搜索angular2的旧路径。

我希望捆绑组件,但没有angular2,组件就会使用我的核心组件。我认为我正在使用buildStatic吗?我只是将ts文件编译为js。

我试过的一些片段:

构建有效的核心:

gulp.task('bundle:js', function() {
    var builder = new SystemBuilder('dist', './src/systemjs.config.js');
    return builder.buildStatic('app', 'dist/app.js');
});

在我的index.html中,我正在加载app.js文件。现在大约2MB。

然后,延迟加载的组件正在搜索: https://IP/@angular/router-deprecated导致404。

现在到了“硬”部分:

   gulp.task('build:static', function () {
  var builder = new SystemBuilder('', './dist/systemjs.config.js');
  builder.buildStatic('dist/start.component.js', 'dist/start.component.static.js', {
    defaultExtension: 'js',
  globalName: 'test',
  globalDeps: {
    '@angular': '@angular'
  }
});
});

在此之后我得到一个大约1,1MB的JS文件。所以我认为它没有角度2?

如果我现在尝试启动我的应用程序,它会告诉我:

EXCEPTION: Error: Uncaught (in promise): No Directive annotation found on StartComponent

我的StartComponent中有一个指令。我的错是什么?我甚至可以这样做吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我需要使用“system.bundle()”来实现这一点。