搜索

首页  >  问答  >  正文

Vite / Vue 3:使用图像源作为道具时“未定义要求”

我从 Vue CLI 切换到 Vite CLI,从 Vue 3 的 Composition API 切换到 SFC Script setup API。

它以前对我来说是如何工作的

当我使用官方 Vue CLI 时,我可以通过 props 传递路径的文件名来导入图像源:

<template>
  <img :src="require(`@/assets/${imagePath}`)"/>
<template/>

<script>
export default {
  props: {
    imagePath: { type: String },
  },
  setup() {
    // ...
  }
}
<script/>

然后这样称呼它:

<template>
  <Image imagePath="icon.png" />
</template>

迁移到Vite后遇到的错误

但是自从我迁移到Vite CLI后,我出现了错误“Uncaught ReferenceError: require is not Defined”。我的文件现在使用脚本设置语法,如下所示:

<script setup>
const props = defineProps({
  imagePath: { type: String },
})
</script>

<template>
  <img :src="require(`@/assets/${props.imagePath}`)"/>
</template>

我尝试过的

我已经尝试使用相对路径直接从资产文件夹导入文件,并且它有效。但我无法使用 import 语句指定 props 的路径。

<script setup>
// Works but do not use the props, so the component is not reusable
import logo from "./../assets/logo.png"
</script>

<template>
  <img :src="logo"/>
</template>
<script setup>
// Component is reusable but the import statement has illegal argument I guess
const props = defineProps({
  imagePath: { type: String },
})

import logo from `./../assets/${props.imagePath}`
</script>

<template>
  <img :src="logo"/>
</template>

我还尝试了模板中的 import 语句,但它甚至无法编译代码:

<script setup>
const props = defineProps({
  imagePath: { type: String },
})
</script>

<template>
  <img :src="import `./../assets/${props.iconPath}`" />
</template>

我错过了什么吗?也许存在一个插件可以帮助我实现这一目标?

P粉301523298P粉301523298257 天前530

全部回复(1)我来回复

  • P粉262926195

    P粉2629261952024-04-07 09:26:33

    我也遇到这个问题了。我对此进行了搜索,并根据此github问题评论找到了,

    有关此内容的更多信息,请参阅功能 | Vite-静态资源

    经过一番搜索,我找到了这个对我有用的 Vue 3 代码示例链接< /p>

    
     
    
    setup() {
      const getImageUrl = (name) => {
            return new URL(`../../lib/Carousel/assets/${name}`, import.meta.url).href
        }
      return { carouselData, getImageUrl }
    }

    回复
    0
  • 取消回复