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

Vite动态导入图片URL异常求助:解析路径出现undefined

动态导入Vite静态图片路径错误排查与解决

问题场景

我有一个包含图片名称的JSON文件:

{
  "img": "placeholder.jpg",
  "title": "124 ave NW",
  "sqft": "1319",
  "bedrooms": "3",
  "bathrooms": "3"
}

组件中尝试根据img字段动态导入图片,代码如下:

<template>
  <div class="project">
    <img width="350px" height="300px" :src="getImgUrl(img)" class="project-image" />
    <h1 class="project-title">{{ title }}</h1>
    <div class="project-details">
      <div class="bedroom-container"><img :src="bedIcon" /> {{ bedrooms + ' bedroom' }}</div>
      <div class="bathroom-container"><img :src="bathIcon" /> {{ bathrooms + ' bathroom' }}</div>
      <div class="size-container">{{ sqft + ' Sq. Ft.' }}</div>
    </div>
  </div>
</template>

使用getImgUrl函数解析图片路径:

const getImgUrl = (img: string) => {
  return new URL(`./assets/images/${img}`, import.meta.url).href
}

预期该函数会拼接出src/assets/images/placeholder.jpg,但实际在开发者工具中看到图片URL为http://localhost:5173/src/components/project-display-component/undefined。已查阅Vite静态资源文档,且在vite.config.ts中配置了base: './src',问题仍未解决。

排查与解决步骤

  • 确认img变量的有效性:先检查组件是否正确接收了JSON中的img字段,比如是否在props中定义、数据导入是否正常。可以在组件内添加console.log(img),如果输出undefined,说明变量未正确传递,这是导致路径出现undefined的直接原因。
  • 修正base配置:base: './src'是错误配置,Vite的base用于设置部署时的公共路径,本地开发无需设置为./src,建议恢复默认配置:
    // vite.config.ts
    export default defineConfig({
      base: '/' // 或直接删除该行,使用默认值
    })
    
  • 调整相对路径层级:new URL的第一个参数是相对于当前组件文件的路径。假设组件位于src/components/project-display-component/,而图片在src/assets/images/,那么相对路径需要往上两级,修改函数如下:
    const getImgUrl = (img: string) => {
      return new URL(`../../assets/images/${img}`, import.meta.url).href
    }
    
  • 校验图片文件存在性:确认src/assets/images/placeholder.jpg真实存在,且文件名(包括大小写)与JSON中的完全一致,Vite对文件名大小写敏感。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:52:40