尝试在 v-for 中的 assets/img 文件夹中加载图像,但图像未加载

Trying to load an image inside a assets/img folder in a v-for, but the images does not load

我正在尝试使用 div 中的 v-for 将图像加载到我的 vue3 项目的 assets/img 文件夹中,但它们没有加载,只是显示我的 alt . 所以,我有一个 vue 组件,它将显示标题和段落以及图像。图片位于 assets/img 文件夹中,我正在使用我创建的商店获取图片的路径。当我尝试像这样放置图像的路径时:src="../assets/img/img2.jpg" 图像呈现。

这是我在 store.js 中的状态之一:

content: [
            {
                headline: 'Teste',
                paragraph: 'this is a paragraph',
                img: '@/assets/img/img.jpg'
            },]

这是我使用 v-for:

的模板
<template>
  <div>
    <div
      class="slider"
      v-for="item, i in content"
      :key='i'
    >
      <h1>{{item.headline}}</h1>
      <p>{{item.paragraph}}</p>
      <img
        :src="item.img"
        alt="test"
      />
    </div>
  </div>
</template>

我的设置:

 setup () {
    const store = useStore()
    const content = store.getters.getContent

    return { content }

  }

我尝试使用 :src="require(item.img)" 但这样做时出现了 webpack 错误:

Uncaught Error: Cannot find module '@/assets/img/img.jpg' webpackEmptyContext components sync:2

也尝试在 src 中指向图像的文件夹,:src="@/assets/img + item.img",但没有成功。

我以前遇到过这个问题。 也许下面的代码可以帮到你。

// create a function in util.js
export const getSrc = ( name ) => {
   
  const path = `/src/assets/img/${name}`
  
  const modules = import.meta.globEager('/src/assets/img/*.jpg')

  return modules[path].default
}

// use getSrc in someItem.vue
import { getSrc } from '@/util/util.js'

content: [
   {
     headline: 'Teste',
     paragraph: 'this is a paragraph',
     img: getSrc('img.jpg')
   }
]