VitePress 中如何自定义首页的 hero 图片路径? 博主林莹 提问于 2026-03-10 21:36:19 阅读 11 框架 我在用 VitePress 搭建文档站,想改首页 hero 区域的背景图,但图片放在 public 目录下引用不到,试了相对路径也不行,一直 404。 配置里写的是 heroImage: '/logo.png',图片确实放在 public/logo.png 了,但页面加载时请求的是 /docs/logo.png,明显路径不对。是不是 VitePress 对 public 的处理有啥特别规则? 我来解答 赞 5 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 程序员司翰 Lv1 VitePress 的 public 目录跟普通 Vite 项目不太一样,路径处理有点坑。 问题在于你很可能配置了 base: '/docs/'。VitePress 的 base 会影响所有资源的路径,但 public 目录的文件在构建时会被直接复制到输出目录根目录,不受 base 影响。所以你写 heroImage: '/logo.png',实际请求的是 /docs/logo.png,但文件其实在 /logo.png。 几个解决办法: 方法一:去掉 base 配置(如果可以的话) 如果你的站点不是部署在子路径,就把 base 改成 '/',这样就正常了。 方法二:用完整的绝对路径 直接写 heroImage: '/docs/logo.png',这样就匹配上你实际的请求路径了。 方法三:把图片放到 .vitepress/public 目录下 这是更推荐的做法。VitePress 会自动处理这个目录下的资源路径,不用纠结 base 的问题。直接 heroImage: '/logo.png' 就行,开发和构建都能正常工作。 简单说就是你配置了 base 但 public 目录的文件路径没跟上,改成方法三最省心。 回复 点赞 1 2026-03-10 22:02 加载更多 相关推荐 2 回答 9 浏览 VitePress 中如何正确引入自定义 Vue 组件? 我在 VitePress 项目里想用自己写的 Vue 组件,但总是报错说组件未注册。明明已经按文档在 .vitepress/components 里放了组件,也重启了 dev server,还是不行。... a'ゞ浚博 框架 2026-03-10 12:05:20 1 回答 17 浏览 VitePress 中如何正确使用 Vue 组件的异步数据获取? 我在 VitePress 里写了一个简单的 Vue 组件,想在页面加载时从 API 拿点数据,但发现 onMounted 里请求的数据在 SSR 阶段不生效,页面首次渲染是空的,只有客户端激活后才显示... Mr.正利 框架 2026-03-04 18:27:21 1 回答 21 浏览 VitePress 中如何在 SSR 时正确使用浏览器 API? 我在 VitePress 的页面里用了 window 对象,结果构建时报错说 window is not defined,但本地开发是好的。是不是因为 SSR 阶段没有浏览器环境? 我试过把代码包在 ... 南宫春晖 框架 2026-02-26 11:42:22 2 回答 29 浏览 VitePress SSR中如何在服务端渲染动态生成的页面内容? 我在用VitePress搭建文档站点时遇到了SSR问题。通过getPages动态生成的路由页面,在服务端渲染时内容显示为空白,但客户端刷新又能正常显示。我尝试在组件setup里用onMounted获取... Air-艺晗 框架 2026-02-11 06:25:33 1 回答 51 浏览 VitePress SSR时动态导入组件报错,应该如何处理? 在用VitePress搭建文档网站时,我尝试在侧边栏动态导入一个统计组件,但SSR时老是报错说无法resolve模块。import('./stats.vue')这种写法在客户端正常,但服务端就挂了。试... 诸葛春艳 框架 2026-01-29 16:17:23 2 回答 39 浏览 开发自定义Webpack Loader时如何获取原始文件路径? 我正在写一个自定义的Webpack loader,想在处理文件时拿到这个文件在磁盘上的绝对路径,但不知道怎么取。试过用this.resourcePath,但不确定是不是正确的做法,文档看得有点懵。 比... ♫青燕 前端 2026-02-24 20:18:20 2 回答 52 浏览 Vant的Image组件图片路径正确但无法显示,如何解决? 在Vue项目里用Vant的Image组件,图片路径写对了但页面就是不显示,到底是哪里出问题了? 代码是这样写的: <template> <van-image :src="i... a'ゞ倩影 组件 2026-02-12 12:36:30 1 回答 8 浏览 Chameleon里怎么处理跨端的图片路径问题? 我在用 Chameleon 开发一个跨端项目,H5 和小程序都要用同一套代码。但图片路径在不同平台表现不一致,本地图片放 static 目录下,H5 能正常加载,微信小程序却显示不出来。 我试过用 c... 秀莲🍀 移动 2026-03-11 10:34:23 1 回答 91 浏览 低代码页面中,如何让自定义组件响应式布局时保持子元素比例? 在搭建低代码平台时,我用自定义组件包裹了一个图片和文字容器,想让它们在不同屏幕宽度下保持16:9的比例。尝试用以下CSS设置,但发现当父容器宽度缩小时,文字容器高度会脱离比例,甚至出现垂直滚动条: .... 红芹 框架 2026-02-09 14:48:33 2 回答 51 浏览 Ant Design的Empty组件如何自定义提示内容和按钮跳转? 在做用户订单列表页时,想用Empty组件显示空状态,但发现官网的示例只能显示默认文案和图片。我想自定义提示文案加一个「去添加商品」的按钮跳转,尝试把按钮套在里放在Empty下面,结果布局错位了。 试过... 端木怡彤 组件 2026-02-08 19:07:24
问题在于你很可能配置了
base: '/docs/'。VitePress 的 base 会影响所有资源的路径,但 public 目录的文件在构建时会被直接复制到输出目录根目录,不受 base 影响。所以你写heroImage: '/logo.png',实际请求的是/docs/logo.png,但文件其实在/logo.png。几个解决办法:
方法一:去掉 base 配置(如果可以的话)
如果你的站点不是部署在子路径,就把 base 改成
'/',这样就正常了。方法二:用完整的绝对路径
直接写
heroImage: '/docs/logo.png',这样就匹配上你实际的请求路径了。方法三:把图片放到 .vitepress/public 目录下
这是更推荐的做法。VitePress 会自动处理这个目录下的资源路径,不用纠结 base 的问题。直接
heroImage: '/logo.png'就行,开发和构建都能正常工作。简单说就是你配置了 base 但 public 目录的文件路径没跟上,改成方法三最省心。