Angular并没有开始使用SystemJS捆绑包

时间:2017-03-15 22:04:42

标签: angular systemjs systemjs-builder

两周以来,我一直在尝试一个奇怪的傻瓜。

我已经考虑过了,我决定制作一个回购并进行测试以解决问题。

它是从angular / quickstart中提取的简单回购。我已经添加了一个gulp文件来构建一个bundle,当我尝试加载它时,我遇到了同样的问题。应用程序无法启动。

这是systemjs的配置:https://github.com/tolemac/systemjs-test/blob/master/systemjs.config.js

这是构建捆绑包的gulpfile:https://github.com/tolemac/systemjs-test/blob/master/gulpfile.js

这是回购:https://github.com/tolemac/systemjs-test

重现说明:

mkdir systemjs-test
cd systemjs-test
git clone https://github.com/tolemac/systemjs-test.git .
npm install
gulp bundle
npm start

2 个答案:

答案 0 :(得分:1)

我尝试了你的回购,并且怀疑它产生的捆绑看起来不正确:

(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? 
      factory(exports, require('@angular/core')) : 
      'function' === 'function' && true ? System.registerDynamic('npm:@angular/compiler/bundles/compiler.umd.js', ['@angular/core'], false, function ($__require, $__exports, $__module) {
        if (typeof factory === 'function') {
            return factory.call($__exports, $__exports, $__require('@angular/core'));
        } else {
            return factory;
        }

这里出了点问题。请注意'function' === 'function' && true ?声明......

我建议您使用 Rollup 捆绑您的应用。

Demo Starter App

答案 1 :(得分:1)

好吧,我花了越来越多的时间。

我已经学习了很多东西,阅读了systemjs,systemjs-builder的源代码以及构建器用来识别加载模块的模块加载器代码的babel插件。所有这一切只是为了意识到问题是SystemJS没有识别捆绑模块的格式......由于这个原因,systemjs不执行加载的代码...然后解决方案是设置格式通过配置捆绑,这样:

packages: {
  ...
  ...
  ...
  'bundles/vendor.js': {
    format: "system"
  }
}

解决!