这里装载的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有或没有的功能(并且在缩小和压缩后)。 –
无论哪种方式,我真正的问题是能够同时加载所有文件,但能够按列出的顺序执行它们 - 如果我将