Webpack 构建 - class 模块未定义
Webpack build - class module is not defined
我正在尝试构建导出 class 并使用 Webpack 捆绑它。
构建 class 后,我在 outputs
选项中配置了 webpack 所有可能的选项,但它仍然给出 [name of module]
not defined or it is not a constructor .
我尝试了两种方法
方法一
我的classA.js文件
export class classA {
constructor(target, options) {
}
}
我的webpack.config.js文件
module.exports = merge(commonConfig, {
entry: {
index: path.resolve(__dirname, 'src/js/classA.js')
},
mode: 'production',
devtool: 'source-map',
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].[contenthash].css'
})
],
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true
})
]
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'classA.bundle.js',
library: 'classA',
libraryTarget: 'umd'
}
});
当我 运行 代码没有导入 index.js 文件中的 classA.js 时,我得到一个错误:
Webpack build ReferenceError - classA module is not defined
方法二
我的classA.js文件
export default class classA {
constructor(target, options) {
}
}
我的webpack.config.js文件
module.exports = merge(commonConfig, {
entry: {
index: path.resolve(__dirname, 'src/js/classA.js')
},
mode: 'production',
devtool: 'source-map',
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].[contenthash].css'
})
],
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true
})
]
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'classA.bundle.js',
library: 'classA',
libraryTarget: 'umd',
libraryExport: 'default'
}
});
这个配置也报同样的错误。
使用 webpack 构建 classA.js 后,如果我们链接了 [=18],它应该自动检测 HTML 文件或任何 .js 文件中编写的脚本中的 new classA()
=] 文件.
它只需要一种正确和更新的方式来配置 webpack output
设置
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'classA.bundle.js',
library: {
name: 'classA',
type: 'umd',
export: 'default',
umdNamedDefine: true
},
globalObject: 'this'
}
模式生产的这个 webpack 设置对我有用:)
谢谢
我正在尝试构建导出 class 并使用 Webpack 捆绑它。
构建 class 后,我在 outputs
选项中配置了 webpack 所有可能的选项,但它仍然给出 [name of module]
not defined or it is not a constructor .
我尝试了两种方法
方法一
我的classA.js文件
export class classA {
constructor(target, options) {
}
}
我的webpack.config.js文件
module.exports = merge(commonConfig, {
entry: {
index: path.resolve(__dirname, 'src/js/classA.js')
},
mode: 'production',
devtool: 'source-map',
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].[contenthash].css'
})
],
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true
})
]
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'classA.bundle.js',
library: 'classA',
libraryTarget: 'umd'
}
});
当我 运行 代码没有导入 index.js 文件中的 classA.js 时,我得到一个错误:
Webpack build ReferenceError - classA module is not defined
方法二
我的classA.js文件
export default class classA {
constructor(target, options) {
}
}
我的webpack.config.js文件
module.exports = merge(commonConfig, {
entry: {
index: path.resolve(__dirname, 'src/js/classA.js')
},
mode: 'production',
devtool: 'source-map',
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].[contenthash].css'
})
],
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true
})
]
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'classA.bundle.js',
library: 'classA',
libraryTarget: 'umd',
libraryExport: 'default'
}
});
这个配置也报同样的错误。
使用 webpack 构建 classA.js 后,如果我们链接了 [=18],它应该自动检测 HTML 文件或任何 .js 文件中编写的脚本中的 new classA()
=] 文件.
它只需要一种正确和更新的方式来配置 webpack output
设置
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'classA.bundle.js',
library: {
name: 'classA',
type: 'umd',
export: 'default',
umdNamedDefine: true
},
globalObject: 'this'
}
模式生产的这个 webpack 设置对我有用:) 谢谢