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

React项目中JS数组存储的本地图片无法加载问题求助

问题原因&解决方案

你遇到的本地图片加载失败问题是代码存在3个核心错误导致的:

  • ES模块的import导入语句必须放在文件最顶部,不能写在数组内部
  • id为3的配置中,img字段赋值为{theBestTestImg}相当于传递了一个对象,而img标签的src属性仅支持接收字符串格式的资源地址
  • id为2的配置直接填写本地相对路径字符串,React打包阶段不会解析这类直接写死的相对路径资源,无法映射到打包后的实际资源地址

网络图片可以正常加载是因为资源为完整的公网可访问URL,不需要经过本地打包工具的资源解析,可直接被浏览器识别加载


修正方案

方案1:提前导入所有本地图片(推荐,打包时会自动压缩资源)

直接修正data.js的写法即可,其余组件不需要做任何改动:

// 所有import语句放在文件顶部
import theBestTestImg from "./src/assets/img/bestTest.png"
import anotherTestImg from "./src/assets/img/anotherTestImg.jpg"

export const products = [
  {
    id: 1,
    img: "https://images.pexels.com/photos/3585047/pexels-photo-3585047.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500",
    link: "http://aTestSite.xyz",
  },
  {
    id: 2,
    img: anotherTestImg,
    link: "https://anotherTestSite.com",
  },
  {
    id: 3,
    img: theBestTestImg,
    link: "https://theBestTestSite.ca",
  },
];

方案2:使用public文件夹存放静态资源

如果不想逐个导入图片,可以把所有图片放到项目根目录的public/img文件夹下,data.js可直接用绝对路径引用资源:

export const products = [
  {
    id: 1,
    img: "https://images.pexels.com/photos/3585047/pexels-photo-3585047.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500",
    link: "http://aTestSite.xyz",
  },
  {
    id: 2,
    img: "/img/anotherTestImg.jpg",
    link: "https://anotherTestSite.com",
  },
  {
    id: 3,
    img: "/img/bestTest.png",
    link: "https://theBestTestSite.ca",
  },
];

public文件夹下的资源不会被webpack打包处理,会直接复制到最终的打包产物目录,用绝对路径即可直接引用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:27:01