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

如何在Next.js项目中正确导入存放在src文件夹的本地图片?

Next.js src目录下图片导入解决方案

你当前的字符串路径写法仅对public目录下的静态资源生效,src目录下的图片需要通过import导入,由Next.js构建工具打包处理后才能正常使用。

具体修改步骤

1. 修改数据文件,导入需要的图片

在你当前存储产品数据的JS文件顶部,按相对路径导入目标图片(注意补全你自己图片的实际后缀,比如.jpg/.png/.webp),之后直接将导入的变量赋值给image字段:

// 路径根据你当前数据文件的位置调整,示例假设数据文件存放在src/data目录下,图片存放在src/img目录下
import ProductImg from '../img/shoes/men/luis/2.jpg'

const data = {
    products: [
      {
        _id: '1',
        name: 'Nike Slim Shirt',
        category: 'Shirts',
        image: ProductImg, // 直接使用导入的变量,不要写字符串路径
        price: 120,
        brand: 'Nike',
        rating: 4.5,
        size: 10,
        description: 'high quality product',
      },
      // 其余产品配置同理,不同产品用不同图片的话,单独导入对应图片即可
    ],
  };
  export default data;

2. 渲染图片的写法

  • 推荐使用Next.js内置的next/image组件(自带性能优化、懒加载等能力),直接传入导入的图片变量即可:
import Image from 'next/image'
import productData from './你的数据文件路径'

// 渲染产品列表
{productData.products.map(item => (
  <div key={item._id}>
    <Image
      src={item.image}
      alt={item.name}
      width={300}
      height={300}
    />
    {/* 其他产品信息渲染 */}
  </div>
))}
  • 如果使用原生<img>标签,需要取导入对象的src属性:
<img src={item.image.src} alt={item.name} />

补充说明

如果你的产品图片数量较多,逐个导入比较繁琐,更建议你将图片迁移到项目根目录的public文件夹下,此时不需要导入操作,直接写字符串路径即可正常访问:
比如图片存放在public/img/shoes/men/luis/2.jpg,image字段直接写/img/shoes/men/luis/2.jpg即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:57:01