You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Vue/Vite项目部署至Vercel与GitHub Pages后图片显示异常求助

Vue/Vite项目部署至Vercel与GitHub Pages后图片显示异常求助

兄弟我之前也碰到过类似的离谱问题!先别慌,咱们一步步来排查可能的原因,大概率能解决:

  • 检查Vite的base路径配置
    这是GitHub Pages部署最容易踩的坑!如果你的项目是部署在GitHub Pages的仓库子路径下(比如https://你的用户名.github.io/仓库名/),必须在vite.config.js里配置base字段为你的仓库名,比如:

    export default defineConfig({
      base: '/你的仓库名/',
      // 其他配置...
    })
    

    Vercel如果用的是自定义域名可能不需要,但如果是默认的vercel.app子域名,有时候也需要确认base是否正确。开发环境下base默认是/,所以本地没问题,但部署后路径不对就会导致图片加载失败。

  • 排查图片压缩/转码的问题
    你提到有些图片出现色彩异常、碎片化的 glitch,这很可能是生产构建时的图片处理插件搞的鬼!比如如果你用了vite-plugin-imagemin这类图片压缩插件,部分图片格式(比如带透明通道的PNG、特殊编码的JPG)可能被错误转码,导致显示异常。可以先暂时禁用这类插件,重新执行npm run build后部署试试,看看问题是否消失。

  • 确认图片import的方式是否正确
    你是在script里import图片再通过props传递,有没有用到动态路径拼接?比如类似import(../assets/${imgName}.png)这种写法?Vite的生产构建是静态分析的,动态拼接的路径可能无法被正确识别打包,虽然开发环境能正常加载,但部署后就会出问题。如果是这种情况,建议用Vite的import.meta.glob来批量导入图片,比如:

    const images = import.meta.glob('../assets/*.png', { eager: true })
    // 然后通过images['../assets/xxx.png'].default来获取图片路径
    
  • 强制清理缓存
    Vercel和GitHub Pages都有CDN缓存机制,有时候旧的错误资源被缓存了,导致你部署了新代码还是显示异常。可以尝试:

    • 浏览器端按Ctrl+F5强制刷新,跳过本地缓存
    • 在Vercel的部署详情页里,找到“Redeploy”选项并勾选“Clear build cache”再重新部署
    • GitHub Pages可以尝试修改一下README.md(随便加个空格再提交),触发重新部署,强制刷新CDN缓存
  • 检查图片本身的编码问题
    虽然开发环境能正常显示,但有些图片可能存在隐性的编码错误(比如部分字节缺失、格式标记异常),开发服务器的图片解析逻辑更宽松,而生产环境的静态资源服务器(Vercel/GitHub Pages的CDN)对格式的校验更严格,导致显示异常。可以尝试用Photoshop、GIMP这类工具重新导出有问题的图片,保存为标准的JPG/PNG格式后再替换试试。

我之前就是因为没设置GitHub Pages的base路径,导致一半图片404,后来又碰到过图片压缩插件把PNG转成WebP后显示色彩失真,关掉插件就好了。你可以一个个试下来,应该能找到问题所在!

内容来源于stack exchange

火山引擎 最新活动