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

Webpack 5 构建React应用时出现Can't resolve images图片加载报错问题

报错根因

你遇到的编译报错是webpack在解析scss文件中的图片路径时,按照相对路径规则查找资源失败导致的:

  • 你在src/app/component/style.scss中使用了./images/picture.png的相对路径,webpack会默认从当前scss文件所在的src/app/component/目录下查找images/picture.png
  • 你的实际图片存放在项目根目录的static/images/路径下,路径不匹配直接触发解析失败
修复方案

下面提供3种可选择的修复方案,根据你的使用习惯选择即可:

方案1:直接修改scss内的引用路径

不需要改webpack配置,直接调整scss里的图片路径为从当前文件到static目录的相对路径即可:

/* 从src/app/component/ 回退3层到项目根目录,再进入static/images */
background: url('../../../../static/images/picture.png');

方案2:配置路径别名减少相对路径层级书写

先修改webpack配置,给static目录配置别名:

const path = require('path');
module.exports = {
  // 其他配置保持不变
  resolve: {
    alias: {
      // 配置@static指向项目根目录下的static文件夹
      '@static': path.resolve(__dirname, 'static')
    }
  }
}

之后在scss中引用图片时,使用别名路径即可,注意scss中使用webpack别名需要加~前缀:

background: url('~@static/images/picture.png');

方案3:添加静态目录到webpack搜索路径

如果希望直接写images/picture.png就能解析到静态资源,可以修改webpack配置,把static目录加入模块搜索列表:

const path = require('path');
module.exports = {
  // 其他配置保持不变
  resolve: {
    modules: [
      'node_modules',
      // 添加static目录到搜索路径
      path.resolve(__dirname, 'static')
    ]
  }
}

之后scss中直接写文件名路径即可:

background: url('images/picture.png');
额外注意项

因为你使用了resolve-url-loader处理sass中的路径,需要确保sass-loader开启了sourceMap配置,否则可能会出现路径解析异常:

// 修改sass-loader的配置项
{
  test: /\.scss$/,
  use: [
    'style-loader',
    'css-loader',
    'resolve-url-loader',
    {
      loader: 'sass-loader',
      options: {
        // 必须开启sourceMap,resolve-url-loader才能正常工作
        sourceMap: true
      }
    }
  ]
}

你的现有asset/resource配置是正确的,打包后图片会输出到dist/ui/images/目录下,和你的预期一致,不需要修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:54:05