javascript webpack在提供文件时重复工作

yc0p9oo0  于 2023-02-02  发布在  Java
关注(0)|答案(2)|浏览(134)

我刚刚遇到了不可预知的情况下,使用自定义的网页包配置。我会尽量解释的问题。
这是我的简单应用程序(文件index.js):

console.log('!!this', this);

这是我的网络包配置(文件webpack.config.js):

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  plugins: [
    new HtmlWebpackPlugin({
      template: './public/index.html',
    }),
  ],
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
  },
  resolve: {
    extensions: ['.js', '.jsx', '.json'],
  },
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        loader: 'babel-loader',
      },
      {
        test: /\.css$/i,
        use: ['style-loader', 'css-loader'],
      },
      {
        test: /\.scss$/,
        use: [
          'style-loader',
          'css-loader',
          {
            loader: 'sass-loader',
            options: {
              additionalData: `@import './src/constants/global';`,
            },
          },
        ],
      },
      {
        test: /\.(png|svg|jpe?g|gif)$/i,
        use: [
          {
            loader: 'file-loader',
            options: { name: 'img/[name].[ext]' },
          },
          'image-webpack-loader',
        ],
      },
    ],
  },
};

这是我启动应用程序的npm脚本(文件package.json):

"scripts": {
    "dev": "webpack serve --config webpack.config.js",
},

因此,我看到了下一幅图-所有代码执行两次(index.js,VM787 index.js)。除此之外,如果我在应用中使用此配置的数据获取回调,我将在Network选项卡中看到两个相等的请求。

谁知道这是什么原因,如何解决?
谢谢!

wz1wpwve

wz1wpwve1#

这可能是StrictMode的结果。它会挂载、卸载并再次挂载组件,以检查是否一切都在正常运行。尝试从index.js中删除它(只是检查一下)。请注意,它对它的用途很有用,而且它只在dev模式下有这种行为。

cld4siwp

cld4siwp2#

如果您自己将JavaScript导入到HTML文件中,则需要在HtmlWebpackPlugin中禁用注入:

new HtmlWebpackPlugin({
  template: './public/index.html',
  inject: false,
}),

相关问题