2017-06-20 83 views
0

我使用fusebox而不是webpack配置我的角度應用程序,我想要3個分離的包(polyfills.js,vendor.js和app.js)。vendor.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'; 

現在我把它改爲保險絲盒

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

在這種情況下polyfills是好的,廠商擁有從應用程序的所有第三方的依賴(〜main.ts)以及所有在vendor.ts,而應用程序只項目中有什麼。

這似乎編譯罰款,但後來當我執行的代碼我在service.get(...)獲得ERROR TypeError: this.http.get(...).map is not a function。圖()

我的感覺是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包裏包含了太多的東西,從303K變爲2.4MB

回答

0

確保你得到命令權。嘗試WebIndexPlugin它有助於自動注入腳本。如果你發佈你的配置文件,它可能會告訴你什麼是錯的