两周以来,我一直在尝试一个奇怪的傻瓜。
我已经考虑过了,我决定制作一个回购并进行测试以解决问题。
它是从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
答案 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 捆绑您的应用。
答案 1 :(得分:1)
好吧,我花了越来越多的时间。
我已经学习了很多东西,阅读了systemjs,systemjs-builder的源代码以及构建器用来识别加载模块的模块加载器代码的babel插件。所有这一切只是为了意识到问题是SystemJS没有识别捆绑模块的格式......由于这个原因,systemjs不执行加载的代码...然后解决方案是设置格式通过配置捆绑,这样:
packages: {
...
...
...
'bundles/vendor.js': {
format: "system"
}
}
解决!