首页 > 解决方案 > 在 webpack 中设置文件加载器会在构建时产生错误

问题描述

这就是我的 webpack.config.babel.js 的样子:

import path from 'path'
import MiniCssExtractPlugin from 'mini-css-extract-plugin'

const out = path.resolve(__dirname, './dist')
const client = path.resolve(__dirname, './src/client')

export default {
  entry: {
    main: `${client}/index`,
    plugins: `${client}/plugins`
  },
  output: {
    path: `${out}`,
    filename: 'js/[name].js',
    chunkFilename: 'js/[name].js'
  },
  module: {
    rules: [
      {
        test: /\.jsx?/,
        loader: 'babel-loader',
        exclude: /node_modules/
      },
      {
        test: /\.scss$/,
        use: ['style-loader', MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader']
      },
      {
        test: /\.(png|svg|jpg|gif)$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: 'assets/img/[name].[ext]'
            }
          }
        ]
      }
    ]
  },
  optimization: {
    runtimeChunk: {
      name: 'manifest'
    },
    splitChunks: {
      cacheGroups: {
        vendor: {
          test: /[\\/]node_modules[\\/]/,
          name: 'vendors',
          priority: -20,
          chunks: 'all'
        }
      }
    }
  },
  target: 'web',
  cache: true,
  plugins: [
    new MiniCssExtractPlugin({
      filename: 'css/[name].css'
    })
  ]
}

如您所见,我正在为 png、svg、gif 和 jpg 使用文件加载器。然后我像这样导入图像:

import img404 from '../../assets/img/404-error.svg'

但我不断收到此错误: 在此处输入图像描述

我不太确定我在这里做错了什么:(仅供参考:这实际上dist/assets/img/THE_ACTUAL_IMAGE_FILE按预期保存了图像

标签: javascriptreactjswebpackbabeljswebpack-file-loader

解决方案


推荐阅读