You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React应用引入图片报Module parse failed错误如何解决

错误原因

webpack 原生仅支持解析 JS、JSON 类型的模块,碰到 jpg 这类二进制静态资源时,需要配置对应的 loader 完成转译。你虽然已经在项目依赖中安装了 file-loader、url-loader,但 webpack.config.js 的 module.rules 配置项中没有新增匹配图片格式的处理规则,webpack 无法识别图片文件格式,因此抛出解析错误。

解决方案

修改 webpack.config.js 配置,在 module.rules 数组中新增图片资源处理规则即可,以下是两种可选配置方案:

方案1:使用 url-loader(推荐)

url-loader 可以在小体积图片时自动转 base64 内嵌到代码中,减少网络请求,完整配置如下:

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

module.exports = {
  entry: [
    path.join(__dirname, './src/index.js')
  ],
  module: {
    rules: [{
      test: /\.(js|jsx)$/,
      exclude: /node_modules/,
      use: [{ loader: 'babel-loader', options: { presets: ['@babel/preset-env', '@babel/react'] } }],
    },
    { 
      test: /\.(less|css|scss)$/, 
      use: ['style-loader', 'css-loader', 'less-loader',] 
    },
    // 新增以下图片处理规则
    {
      test: /\.(png|jpg|jpeg|gif|svg|webp)$/,
      use: [{
        loader: 'url-loader',
        options: {
          // 小于8KB的图片转base64内嵌,大于阈值的自动调用file-loader输出为独立文件
          limit: 8 * 1024,
          // 配置打包后图片的输出路径和命名规则
          name: 'static/img/[name].[hash:8].[ext]',
          // 关闭ES模块导出,避免图片引入时出现路径为[object Module]的问题
          esModule: false
        }
      }]
    }
    ]
  },
  output: {
    path: path.join(__dirname, '/public'),
    filename: 'bundle.js'
  },
  devServer: {
    contentBase: path.join(__dirname, '/public'),
    // historyApiFallback: true
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "./src/index.html"
    })
  ]
}

方案2:使用 file-loader

如果不需要 base64 转码功能,直接配置 file-loader 即可:

// 在module.rules中新增规则
{
  test: /\.(png|jpg|jpeg|gif|svg|webp)$/,
  use: ['file-loader']
}

配置修改完成后,重启本地开发服务,重新执行 npm run start 即可正常引入图片。

内容的提问来源于stack exchange,提问作者user16644136

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:06:03