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

Nuxt3 Vue3:动态传递本地图片路径至组件失效求助

解决Nuxt 3中动态加载本地图片的问题

你的问题出在Nuxt 3不再推荐使用require处理静态资源,而且动态路径拼接的方式不符合Nuxt的资源解析规则。直接写死路径能生效,是因为构建工具会在编译阶段就解析~/assets路径,替换为正确的资源URL;但用require动态拼接时,Nuxt的资源处理器无法提前识别和处理这个路径,导致找不到模块。

下面是两种可行的解决办法:

方法一:使用Nuxt 3的useAsset函数

这是Nuxt官方推荐的动态加载静态资源的方式,它会正确解析~/assets路径并返回资源的URL:

<template>
  <img :src="useAsset(`~/assets/img/${fileName}`)" />
</template>

<script setup>
const fileName = 'tds_logo.png'
</script>

方法二:将图片移至public目录

如果不需要Nuxt对图片进行构建优化(比如压缩、哈希命名),可以把图片放到项目根目录的public/img文件夹下,然后直接用绝对路径访问:

<template>
  <img :src="`/img/${fileName}`" />
</template>

这种方式下,图片会被直接复制到最终的输出目录,无需经过构建工具处理。

需要注意的是:

  • 确保fileName变量的值完全正确,没有多余的空格或拼写错误
  • ~/assets下的资源会被Nuxt的构建工具处理(比如添加哈希后缀),而public下的资源保持原路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:11