webpack - file-loader、url-loader 和 webpack 未加载图像

标签 webpack urlloader webpack-style-loader css-loader webpack-file-loader

我正在尝试像这样在我的 React 代码中导入图像(我正在使用 babel):

import borgCube from '../assets/cube.png';

<img className="img-rounded" src={borgCube}></img><p />

当我在浏览器中检查损坏的图像时看到的内容:

<img class="img-rounded" src="data:image/png;base64,bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArICI5NTU1ZGJiNWQ3YjUzMjA3N2NjNWQyMzc4ZDgzNzVmZS5wbmciOw==">

它曾经有效,直到我添加了 css-modules。这是我的 webpack 配置的样子:

var webpack = require('webpack');
var path = require('path');
var combineLoaders = require('webpack-combine-loaders');

const isDebug = !process.argv.includes('--release');

module.exports = {
  devtool: 'eval',

  entry: {
    app: [
      'webpack-dev-server/client?http://0.0.0.0:3000',
      'webpack/hot/only-dev-server',
      './src/index'
    ]
  },

  output: {
    filename: '[name].js',
    path: path.join(__dirname, './build'),
    publicPath: 'http://localhost:3000/build/'
  },

  resolve: {
    extensions: ['', '.js', '.jsx', '.css', '.png'],
    modulesDirectories: ['src', 'node_modules']
  },

  module: {
    loaders: [
      {
        test: /\.(js|jsx)$/,
        loaders: ['react-hot', 'babel'],
        exclude: /node_modules/
      },
    { test: /\.(woff|png)$/, loader: 'url-loader?limit=10000' },
    { test: /\.(png|jpg)$/, loader: 'file-loader'},

    {
        test: /\.css$/,
        loader: combineLoaders([
          {
            loader: 'style-loader'
          }, {
            loader: 'css-loader',
            query: {
              modules: true,
              localIdentName: '[name]__[local]___[hash:base64:5]'
            }
           }
          ])
      },
    ]

  },


  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin(),
    new webpack.DefinePlugin({
      'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development') }
    })
  ]

};

最佳答案

这解决了它:

module: {
loaders: [
  {
    test: /\.(js|jsx)$/,
    loaders: ['react-hot', 'babel'],
    exclude: /node_modules/
  },
  {
      test: /\.css$/,
      loader: combineLoaders([
        {
          loader: 'style-loader'
        }, {
          loader: 'css-loader',
          query: {
            modules: true,
            localIdentName: '[name]__[local]___[hash:base64:5]'
          }
         }
        ])
    },
  { test: /\.(png|jpg|jpeg|gif|svg)$/, loader: "url-loader?limit=100000" },
  { test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader?limit=10000&mimetype=application/font-woff" },
  { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" }
],
},

关于webpack - file-loader、url-loader 和 webpack 未加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40899787/

相关文章:

css - 为什么 css-loader/style-loader 会抛出意外字符 # 错误?

ecmascript-6 - 如何使用 Webpack 删除/取消导入内联 CSS?

javascript - 使用 webpack、less-loader 和 vuejs 无法识别输入

javascript - 一旦通过 npm 脚本运行,Webpack 就无法工作

reactjs - 如何将 webpack 开发服务器默认端口从 8080 更改为其他端口?

actionscript-3 - AS3 : Multiple "get" URLRequests not working

javascript - 通过 Webpack 加载 FontAwesome : Fonts do not load

ruby-on-rails - Rails Webpacker 3.0 导入 CSS 文件不起作用

vue.js - 使用 Vue SSR 渲染页面时的动态 publicPath

javascript - Webpack [url/file-loader] 没有解析 URL 的相对路径