You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js应用本地图片正常,部署Firebase后404无法加载问题排查

解决Vue.js部署Firebase后图片404的问题

我帮你排查下这个问题,其实核心原因是本地开发和生产构建的资源路径处理逻辑不一样:本地时webpack能直接解析../assets/logo.png这种相对路径,但生产构建后,资源会被打包到dist目录下的特定文件夹,原来的相对路径就失效了,Firebase自然找不到这些图片。下面给你几个靠谱的解决方案:

方案1:用@别名引入图片(最推荐)

Vue项目默认配置了@作为src目录的别名,不管开发还是生产环境,webpack都能正确解析这个路径,自动帮你处理资源打包后的路径。

直接修改img标签:

<img src="@/assets/logo.png" style="width:100%" alt="Avatar">

如果需要动态绑定(比如用变量控制图片),就用:src配合require:

<img :src="require('@/assets/logo.png')" style="width:100%" alt="Avatar">

方案2:通过require动态引入到data里

如果你的图片路径需要根据业务逻辑动态变化,把图片资源通过require引入到组件的data中是更稳妥的方式:

<template>
  <img :src="logoImage" style="width:100%" alt="Avatar">
</template>

<script>
export default {
  data() {
    return {
      logoImage: require('../assets/logo.png')
    }
  }
}
</script>

这样webpack会明确知道这个资源需要被打包,构建后生成正确的访问路径。

方案3:检查Firebase的部署配置

别漏了确认firebase.json里的hosting配置是否正确指向Vue的构建输出目录dist:

{
  "hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

如果public字段设成了别的目录,Firebase就找不到你打包好的图片资源了。

方案4:确认部署前执行了生产构建

最后别忘了,部署到Firebase之前一定要先执行生产构建命令:

npm run build

这个命令会把项目打包到dist目录,你只有把dist里的内容部署到Firebase,资源才能被正确加载。

内容的提问来源于stack exchange,提问作者Shadiqur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:57:21