這裏裝載的WebPack束就是我想要做的:動態另一個項目
有一個SubApp
當用的WebPack建,創建一個vendor.js和app.js束。以這種方式構建的應用程序已經可用有一個MainApp
,動態加載供應商和應用程序包SubApp
。這不起作用。
當裝載包,我發現了以下錯誤:
Cannot read property 'call' of undefined
我使用所有代碼代碼:
SubApp
的WebPack配置:
{
context: path.resolve(__dirname, './src'),
entry: {
app: './app.js',
},
output: {
path: path.resolve(__dirname, './dist'),
filename: '[name].js',
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks(module) {
return module.context && module.context.indexOf('node_modules') >= 0;
},
}),
],
};
SubApp
app.js:
import angular from 'angular';
angular.module('barApp', [])
.component('foobar', {
template: `BAR APP`,
});
MainApp
的WebPack配置:
{
context: path.resolve(__dirname, './src'),
entry: {
app: './nav.js',
},
output: {
path: path.resolve(__dirname, './dist'),
filename: '[name].js',
},
module: {
rules: [
{
test: /\.html$/,
use: [{ loader: 'html-loader' }],
},
],
},
devServer: {
contentBase: path.resolve(__dirname, './src'),
},
};
MainApp
app.js:
Promise.all([
import('./SubApp/dist/vendor.js'),
import('./SubApp/dist/app.js'),
]).then(([ vendor, app ]) => {
console.log('Success');
}).catch(err => {
console.log("Chunk loading failed", err);
});
運行MainApp
(無論是從開發服務器或內建文件)會產生:Chunk loading failed TypeError: Cannot read property 'call' of undefined
。
我正在使用webpack 2.5.0。
編輯:在一些調查中,它看起來像我可以讓我的當前設置工作,如果我裝的供應商和順序的應用程序,這樣做會但裝載顯著放緩,因爲我需要等待大(供應商)捆綁軟件在讀取實際應用程序之前首先加載。
AFAIK,動態加載的模塊仍應按請求的順序執行,而不是按照哪個請求先完成。
有一些指針,我可以將SubApp
作爲library打包,但如果我想擁有單獨的供應商和應用程序捆綁包,則不知道該怎麼做。
嗨威廉。我使用異步模塊加載的原因是爲了避免做你的建議。 MainApp會立即加載,因爲在我的情況下它需要知道需要在某個點上按需加載的模塊。在現實生活中,不會有一個,而是多個SubApp。將它們全部發送到MainApp意味着向客戶端發送幾MB包,而不管它們是否需要每個SubApp有或沒有的功能(並且在縮小和壓縮後)。 –
無論哪種方式,我真正的問題是能夠同時加載所有文件,但能夠按列出的順序執行它們 - 如果我將