最近的项目是vue3+vite,在使用require引用图片路径的时候就报错 require is not defined,就很尴尬,因为typescript不支持require所以之前直接用imgUrl: require(’…/assets/test.png’) 导入就会报错需要用import导入,记录一下解决方法:
第一种:使用await import(’@/assets/img/22.png’);
- <template>
- <img :src="imgUrl" alt="">
- </template>
-
- <script>
- import {ref, onMounted} from "vue";
- export default {
- name: "imgPage",
- setup(){
- onMounted(()=>{
- handleImgSrc();
- })
- const imgUrl = ref('');
- const handleImgSrc = async()=>{
- let m = await import('@/assets/img/22.png');
- imgUrl.value = m.default;
- };
- return{
- imgUrl
- }
- }
- }
- </script>
第二种:循环利用返回值请求本地图片
- <template>
- <img v-for="item in imgList" :src="getAssetsImages(item.url)" alt="">
- </template>
-
- <script>
- import {ref, reactive, onMounted} from "vue";
- export default {
- name: "imgPage",
- setup(){
-
- const imgList = reactive([
- {url: 'a.png'},{url: 'b.png'},{url: 'c.png'}
- ])
- const getAssetsImages =(name)=> {
- return new URL(`/src/assets/pic/${name}`, import.meta.url).href; //本地文件路径
- }
-
- return{
- imgList ,
- getAssetsImages
- }
- }
- }
- </script>