0

自两周前以来,我一直在尝试一种奇怪的行为。

我已经考虑并决定进行回购并进行测试以隔离问题。

这是一个从 angular/quickstart 中提取的简单仓库。我添加了一个 gulp 文件来构建一个包,当我尝试加载它时,我遇到了同样的问题。应用程序未启动。

这是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
4

2 回答 2

1

好吧,我已经花越来越多的时间在它上面了。

通过阅读 systemjs、systemjs-builder 的源代码和构建器用来识别已加载模块的模块加载器代码的 babel 插件,我学到了很多东西。只是为了意识到问题是 SystemJS 不识别捆绑模块的格式...因此,systemjs 不执行加载的代码...然后解决方案是通过设置捆绑包的格式配置,这样:

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

解决了!

于 2017-03-18T20:13:59.360 回答
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来捆绑您的应用程序。

演示入门应用

于 2017-03-16T01:53:00.963 回答