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

GitHub Pages部署时相对路径失效问题求助

GitHub Pages部署后相对路径失效的问题排查与解决

1. 相对路径解析的核心差异

本地运行时,页面基准URL是项目根目录(如http://localhost:3000/),但部署到GitHub Pages后,站点基准URL变为https://<用户名>.github.io/<仓库名>/。你用的../assets/data/staticSet.json是基于当前页面URL层级解析的,比如当前页面是https://jamestroxel.github.io/NASA-JPL-NEO/index.html,../assets会被解析到https://jamestroxel.github.io/assets/,直接跳过了仓库名,自然出现404。

2. 静态单页应用的直接修复方案

  • 改用带仓库名的根相对路径:把路径硬编码为/NASA-JPL-NEO/assets/data/staticSet.json,这种写法从域名根目录开始定位,直接指向仓库下的资源,不受页面层级影响。
  • 动态获取基准路径:不想硬编码仓库名的话,用JS动态提取当前路径的仓库名:
    const repoName = window.location.pathname.split('/')[1];
    d3.json(`/${repoName}/assets/data/staticSet.json`).then((data) => {
      // 数据处理逻辑
    });
    

3. _config.yml不生效的原因

Jekyll的baseurl配置只对Jekyll生成的页面(比如用Liquid语法引用的资源)有效,纯静态HTML/JS项目不会自动读取这个配置,所以加了也没用。

4. GitHub Pages的隐性变化排查

最近GitHub Pages对静态资源路径解析可能有调整,之前的相对路径写法可能依赖本地与部署环境的URL层级巧合,现在这种巧合不存在了。额外检查两点:

  • 确认部署分支正确(比如gh-pages分支或主分支的部署配置),确保构建后的文件里确实包含assets/data/staticSet.json。
  • 查看仓库的GitHub Pages设置,是否开启了自定义域名——如果开启,基准URL会变成域名根目录,路径写法也要对应调整。

5. Angular项目的专属处理

Angular项目部署到GitHub Pages时,必须在构建时指定--base-href参数:

ng build --prod --base-href="/NASA-JPL-NEO/"

这样Angular会自动给所有资源路径加上基准前缀,避免路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:22:36