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

React组件本地图片无法加载问题求助

React + styled-components 本地图片加载失败修复方案

问题情况

在使用styled-components的React组件中,尝试通过import和require两种方式引入本地图片../img/bannerImage.jpg,图片始终无法加载,渲染后的img标签src属性分别显示[object Module]和[object Object],但外部图片可以正常显示。

修复方案

1. 处理import引入方式

Webpack 5+(包括Create React App v5及以上版本)中,导入图片资源默认返回ES模块对象,需要访问其default属性获取实际的图片URL:

import bannerImage from '../img/bannerImage.jpg';
// 使用时
<img src={bannerImage.default} />

2. 处理require引入方式

使用require引入图片时,同样需要获取default属性来拿到图片URL:

<img src={require("../img/bannerImage.jpg").default} />

修改后的完整代码示例

import styled from 'styled-components';
import bannerImage from '../img/bannerImage.jpg';

const StyledBanner = styled.div`
    margin-top: 55px;
    width: 100%;
    height: 20px;
    background-color: red;
`;

function Banner() {
    return (
        <StyledBanner>
            <img src={require("../img/bannerImage.jpg").default} />
            <img src={bannerImage.default} />
        </StyledBanner>
    );
};

export default Banner;

原因说明

  • [object Module]:ES模块规范下,导入的资源会被包装成模块对象,直接赋值给src会触发对象的字符串化,导致显示该内容。
  • [object Object]:在ES模块环境中使用require,返回的也是包含default属性的对象,直接使用会出现同样的字符串化问题。

内容的提问来源于stack exchange,提问作者Rafael Bruno da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:10:36