Я настраиваю свое угловое приложение с помощью блока предохранителей вместо веб-пакета и хочу иметь 3 отдельных пакета (polyfills.js, vendor.js и app.js).
В веб-пакете я использую это:
'polyfills': './src/polyfills.ts',
'vendor': './src/vendor.ts',
'app': './src/main.ts'
полифиллы.тс
import 'core-js/es6';
import 'core-js/es7/reflect';
require('zone.js/dist/zone');
if (process.env.ENV === 'production') {
// Production
} else {
// Development and test
Error['stackTraceLimit'] = Infinity;
require('zone.js/dist/long-stack-trace-zone');
}
и vendor.ts
import '@angular/platform-browser';
import '@angular/platform-browser-dynamic';
import '@angular/core';
import '@angular/common';
import '@angular/compiler';
import '@angular/http';
import '@angular/router';
import '@angular/forms';
import 'rxjs';
import './rxjs-extensions';
с rxjs-extensions.ts
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw';
Теперь я изменил это на блок предохранителей
fuse.bundle('polyfills').instructions('> polyfills.ts');
fuse.bundle('vendor').instructions('~ main.ts vendor.ts');
fuse.bundle('app').instructions('!> [main.ts]').watch().hmr();
В этом случае с полифиллами все в порядке, а у продавца есть все сторонние зависимости от приложения (~main.ts) плюс все в vendor.ts, а у приложения есть только то, что есть в проекте.
Кажется, компилируется нормально, но затем, когда я выполняю код, я получаю ERROR TypeError: this.http.get(...).map is not a function
в моем service.get(...).map()
Мне кажется, что vendor.ts не импортирует расширения rxjs.
Кто-нибудь знает, как это исправить?
Если я использую только
fuse.bundle('polyfills').instructions('> polyfills.ts');
fuse.bundle('vendor').instructions('> vendor.ts');
fuse.bundle('app').instructions('> main.ts').watch().hmr();
это работает, но тогда мой пакет app.js включает слишком много вещей и увеличивается с 303 КБ до 2,4 МБ.