vue3+vite项目,打包后,图片失效的问题

目录大致如下(下面举的例子以这个为例):

问题描述:
第一次使用vue3+vite写一个项目,不太清楚这里的配置和vite构建工具的特性,所以在开发的时候,图片的路径都是用的相对路径;如果是静态使用的话,是正常的,比如:

这样的静态路径引入,在开发和打包上测试环境都没有问题,都能正常显示!但是,如果图片的路径是动态的,那么打包后,在测试环境下,这个图片是现实不出来的,代码中是这样写的:

imgSrc的值为:

const imgBaseUrl = '../../../src/assets/';
const boss = ref([
  { imgSrc: `${imgBaseUrl}distribution-details.png`}
])

但是打包后,报错如下:

可以发现,在域名下直接接了src文件,但是这个域名下面是没有src文件夹的。所以浏览器报错了,同时页面没有图片显示,所以打包的时候,图片的路径出问题了!

解决方法(也是浏览其他同学的博客,正好自己解决的方案):
1、将本地的图片资源放在public目录下;(本人没有试过,但是大家都这么说)

2、vite官网提供的一种方法:

静态资源处理 | Vite 官方中文文档
new URL() + import.meta.url

在本人的代码中,是这样处理的:

a.首先在utils文件夹下创建pubUse文件(因为后续多个页面使用,就在utils中创建了):

// 获取assets静态资源
const getAssetsFile = (url: string) => {
  return new URL(`../../assets/${url}`, import.meta.url).href
}

export default {
  getAssetsFile
}

为什么我这个是 "../../assets/${url}" 呢? 

因为我这个文件的位置需要网上翻两层才能找到assets文件夹(可以见最上面的草图)。

b.使用的话,就是在需要的页面是引入这个函数即可,比如在login/index.vue文件中使用:

//引入工具类
import pubUse from '@/utils/pubUse';
const boss = ref([
  { imgSrc: `${pubUse.getAssetsFile('accountManager.png')}`}
])

这样的话,开发和上测试的时候,图片都能够正常显示了!

结尾:此文章仅为了下一次有相同的问题能够快速的解决,具体造成这种错误的原因需要去了解vite,有时间再说吧!

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值