Webpack 使用新dependOn语法的网页条目和问题
我在我的web应用程序中使用webpack v5.0.0 beta版,在使用入门部分中新的Webpack 使用新dependOn语法的网页条目和问题,webpack,Webpack,我在我的web应用程序中使用webpack v5.0.0 beta版,在使用入门部分中新的dependOn选项时遇到了一些问题 我有两个应用程序,在单独的回购协议中,我将它们组合到我的web应用程序中。为简单起见,我将它们称为appA和appB 每个应用都有自己的repo和自己的webpack配置。我绑定appB,并将这些绑定文件作为appA的依赖项导入 问题在于,由于appB有多个条目,因此捆绑包文件中存在大量重复代码。我开始使用新的dependOn语法,这似乎是一个很好的修复方法,但现在当我
dependOn
选项时遇到了一些问题
我有两个应用程序,在单独的回购协议中,我将它们组合到我的web应用程序中。为简单起见,我将它们称为appA和appB
每个应用都有自己的repo和自己的webpack配置。我绑定appB,并将这些绑定文件作为appA的依赖项导入
问题在于,由于appB有多个条目,因此捆绑包文件中存在大量重复代码。我开始使用新的dependOn语法,这似乎是一个很好的修复方法,但现在当我尝试在appA中导入appB时,我得到以下错误:
Uncaught(in promise)类型错误:loadAppB不是构造函数
调试时,在开发工具中,变量loadAppB
以某种方式分配给整数1
以下是我如何将appB作为appA中的依赖项加载:
import( /* webpackChunkName: "AppB" */ "../lib/appB" ).then( module => {
const loadAppB = module.default;
window.appB = new loadAppB();
const path = require("path");
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
entry: {
AppB: { import: "./src/AppB.js", dependOn: "Class"},
Class: "./src/Class.js",
Subclass: { import: "./src/Subclass.js", dependOn: "Class" },
},
output: {
filename: "[name].js",
path: path.resolve(__dirname, "build"),
libraryTarget: 'commonjs2'
},
mode: "production",
optimization: {
minimize: false,
},
plugins: [
new CleanWebpackPlugin(),
],
};
以下是appB的网页配置:
import( /* webpackChunkName: "AppB" */ "../lib/appB" ).then( module => {
const loadAppB = module.default;
window.appB = new loadAppB();
const path = require("path");
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
entry: {
AppB: { import: "./src/AppB.js", dependOn: "Class"},
Class: "./src/Class.js",
Subclass: { import: "./src/Subclass.js", dependOn: "Class" },
},
output: {
filename: "[name].js",
path: path.resolve(__dirname, "build"),
libraryTarget: 'commonjs2'
},
mode: "production",
optimization: {
minimize: false,
},
plugins: [
new CleanWebpackPlugin(),
],
};
有趣的是,如果我将appB的webpack配置中的条目修改为:
entry: {
AppB: "./src/AppB.js",
Class: "./src/Class.js",
Subclass: { import: "./src/Subclass.js", dependOn: "Class" },
},
而不是这个(原件):
通过删除appB条目中的dependOn
选项,我能够成功地在appA内部加载appB
即使这样做有效,appB条目文件使用类
导出,因此类
文件的代码是重复的(它出现在appB捆绑包以及它自己的输出捆绑包中)
有没有人遇到过类似的事情,或者知道为什么会发生这种情况
我还将包括appA的webpack配置,以防万一
const path = require('path');
const webpack = require('webpack');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
entry: {
app: "./js/app.js"
},
output: {
filename: "[name].bundle.js",
chunkFilename: "[name].bundle.js",
publicPath: 'build/',
path: path.resolve(__dirname, "build"),
},
optimization: {
minimize: false,
concatenateModules: false,
},
mode: "production",
plugins: [
new CleanWebpackPlugin(),
new webpack.SourceMapDevToolPlugin()
],
module: {
rules: [
{
test: require.resolve('jquery'),
use: [{
loader: 'expose-loader',
options: 'jQuery'
},{
loader: 'expose-loader',
options: '$'
}]
}
]
},
};