Angular не начинает использовать пакет SystemJS
Я экспериментировал со странным существом две недели назад.
Я размышлял и решил сделать репо и сделать тесты, чтобы изолировать проблему.
Это простой репо, извлеченный из углового / быстрого старта. Я добавил файл 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
2 ответа
Ну, я провел все больше и больше времени с этим.
Я многому научился, читая исходный код systemjs, systemjs-builder и плагинов babel, используемых сборщиком для идентификации кода загрузчика модулей загруженных модулей. Все только для того, чтобы понять, что проблема в том, что SystemJS не идентифицирует формат модуля пакета... из-за этого, systemjs не выполняет загруженный код... тогда решение было установить формат пакета через конфигурация, таким образом:
packages: {
...
...
...
'bundles/vendor.js': {
format: "system"
}
}
Решено!
Я опробовал ваш репозиторий, и, как подозревал, пакет, который он производит, выглядит неправильно:
(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 для комплектации вашего приложения.