vue3 引用圖片的坑要用 new URL('./img.png', import.meta.url).href 而不是 require

·

1 min read

https://cn.vitejs.dev/guide/assets#new-url-url-import-meta-url

https://blog.51cto.com/u_15105778/6989918
因為 require 是 webpack 提供的一種加載能力,而 vue3 是搭配 vite 的,所以這邊應該使用 vite 提供的靜態資源載入方法。
https://vitejs.dev/guide/assets#new-url-url-import-meta-url

具體來說程式碼長這樣:

<template>
  <div class="product-wrapper">
    <img :src="getSrc(product.image.mobile)" />
    <div class="new-product">NEW PRODUCT</div>
    <div class="product-name">{{ product.name }}</div>
    <div class="product-price">{{ product.price }}</div>
  </div>
  <div class="product-desc">{{ product.description }}</div>
</template>

<script setup>
import { defineProps } from "vue";
const { product } = defineProps(["product"]);

//https://cn.vitejs.dev/guide/assets#new-url-url-import-meta-url
const getSrc = (imageName) => {
  const image = new URL("../../" + `${imageName}`, import.meta.url).href;
  return image;
};
</script>