fusebox中的vendor.js包不起作用

时间:2017-06-20 12:59:49

标签: fusebox

我使用fusebox而不是webpack配置我的角度应用程序,我希望有3个独立的包(polyfills.js,vendor.js和app.js)。

在webpack中,我使用了这个:

'polyfills': './src/polyfills.ts',
'vendor': './src/vendor.ts',
'app': './src/main.ts'

是polyfills.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';

现在我把它改成了fusebox

fuse.bundle('polyfills').instructions('> polyfills.ts');
fuse.bundle('vendor').instructions('~ main.ts vendor.ts');
fuse.bundle('app').instructions('!> [main.ts]').watch().hmr();

在这种情况下,polyfills很好,并且出售者拥有app(~main.ts)中的所有第三方依赖项以及vendor.ts中的所有内容,而app只包含项目中的内容。

似乎编译正常但是当我执行代码时,我在service.get(...)中得到ERROR TypeError: this.http.get(...).map is not a function。map()

我的感觉是vendor.ts没有导入rxjs-extensions。

任何人都知道如何解决这个问题?

如果我只使用

fuse.bundle('polyfills').instructions('> polyfills.ts');
fuse.bundle('vendor').instructions('> vendor.ts');
fuse.bundle('app').instructions('> main.ts').watch().hmr();

它可以工作,但是我的app.js包包含太多东西,从303K到2.4MB

1 个答案:

答案 0 :(得分:0)

确保您获得了正确的订单。试试WebIndexPlugin它有助于自动注入脚本。如果您发布配置文件,它可能会告诉您出错了什么