【问题标题】:Cannot load image webpack (4.41.0)无法加载图像 webpack (4.41.0)
【发布时间】:2020-01-25 18:42:08
【问题描述】:

我正在尝试使用 Webpack 加载 jpg 图像文件,但我不断收到以下错误:Uncaught Error: Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js): ModuleParseError: Module parse failed: Unexpected character '�' (1:0)

我正在使用文件加载器,所以我不确定出了什么问题...

这是我的webpack.config.js 文件:

 module.exports = {
  context: __dirname,
  entry: {
    frontend: ['./src/index.js', './src/sass/style.scss'],
    customizer: './src/customizer.js'
  },
  output: {
    path: path.resolve(__dirname, 'public'),
    filename: '[name]-bundle.js'
  },
  mode: 'development',
  devtool: 'cheap-eval-source-map',
  module: {
    rules: [
    {
      test: /\.(jpe?g|JPG|png|gif)\$/,
      use: [
        {
          loader: 'file-loader',
          options: {
            publicPath: 'public/images',
            name: '[name].[ext]'
         }
       }
     ]
   }

我的图像当前存储在src/images 目录中。我能错过什么?

感谢您的帮助!

编辑:这是我用来拉入图像的 CSS:

#header {
  background: url('../images/header.JPG') no-repeat center center fixed;
  background-size: cover;
}

编辑:这是我的整个webpack.config.js 文件:

const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const BrowserSyncPlugin = require('browser-sync-webpack-plugin');
const StyleLintPlugin = require('stylelint-webpack-plugin');

module.exports = {
  context: __dirname,
  entry: {
    frontend: ['./src/index.js', './src/sass/style.scss'],
    customizer: './src/customizer.js'
  },
  output: {
    path: path.resolve(__dirname, 'public'),
    filename: '[name]-bundle.js'
  },
  mode: 'development',
  devtool: 'cheap-eval-source-map',
  module: {
    rules: [
      {
        enforce: 'pre',
        exclude: /node_modules/,
        test: /\.jsx$/,
        loader: 'eslint-loader'
      },
      {
        test: /\.jsx?$/,
        loader: 'babel-loader'
      },
      {
        test: /\.s?css$/,
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
      },
      {
        test: /\.svg$/,
        loader: 'svg-sprite-loader',
        options: {
          extract: true,
          spriteFilename: 'svg-defs.svg'
        }
      },
      {
        test: /\.(jpe?g|JPG|png|gif)\$/,
        use: [
          {
            loader: 'file-loader',
            options: {
              publicPath: 'public/images',
              name: '[name].[ext]'
            }
          }
        ]
      }
    ]
  },
  plugins: [
    new StyleLintPlugin(),
    new MiniCssExtractPlugin({
      filename: '[name].css'
    }),
    new BrowserSyncPlugin({
      files: '**/*.php',
      proxy: 'http://mysite.test/'
    })
  ],
  optimization: {
    minimizer: [new UglifyJsPlugin(), new OptimizeCssAssetsPlugin()]
  }
};```

【问题讨论】:

  • 你的 css 文件存储在哪里?
  • @AymanMorsy 我实际上使用的是 SASS 代码——它位于 src/sassCSS 编译到public 文件夹中。
  • 我相信这与file loader 无关,它是关于 Sass 引用 mini-css-extract-plugin 的错误消息我看不到你在哪里处理它...请把你所有的配置代码放在这里
  • 嘿@AymanMorsy,刚刚添加了我的整个webpack.config.js 文件。

标签: javascript webpack webpack-4 webpack-file-loader


【解决方案1】:
test: /\.(JPG|gif|svg|gif|png)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
            include: SRC,
            use: [{
                loader: 'file-loader'
            }]
             .
             .
             .

【讨论】:

    【解决方案2】:
    • 首先尝试像这样替换您的 sass 正则表达式测试:
      test: /\.(sass|scss)$/

    • 如果它不起作用,请尝试像这样替换整个规则:

                {
                    test: /\.(sass|scss)$/,
                    use: [
                        MiniCssExtractPlugin.loader, 
                        {
                            loader: 'css-loader',
                        }, 
                        {
                            loader: 'sass-loader',
                        } 
                    ]
                }
    
    • 同时从 MiniCssExtractPlugin 中删除 {filename: '[name].css'}

    通过我提到的两次尝试,让它保持简单:

     plugins:[
    ...
        new MiniCssExtractPlugin(),
    ...
    

    【讨论】:

    • 我试过这个,但现在我收到以下错误:Uncaught Error: Module parse failed: Unexpected character '�' (1:0) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders (Source code omitted for this binary file)
    • 这几乎是一个错字'�'你能把项目上传到github上看看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2017-06-06
    • 2017-02-20
    • 2017-01-18
    • 2023-03-27
    相关资源
    最近更新 更多