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 设置对我有用:) 谢谢