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

GitHub Pages部署后JS fetch拉取仓库JSON文件失败如何解决

问题核心结论

你遇到的资源加载失败问题和GitHub Pages的资源预加载能力无关,GitHub Pages本身是纯静态文件托管服务,不存在「异步调用才加载的资源不会被识别托管」的限制,问题根源是你代码里写的fetch请求路径错误。

错误原因

你当前代码里的请求地址 https://GITUSER.github.io/GITREPO/tree/gh-pages/data/file.json 是GitHub仓库Web端的代码浏览路径,不是GitHub Pages服务对外暴露的静态资源路径。
GitHub Pages部署完成后,会直接将你指定部署分支(你用的是gh-pages分支)对应目录下的所有文件,映射到站点路径下,根本不存在/tree/gh-pages/这层路由。

修复方法

直接修改fetch请求的路径即可,优先用相对路径避免硬编码域名、仓库名带来的后续维护问题,修改后的完整代码如下:

(async function(){
  // 路径对应gh-pages分支部署目录下的 data/file.json 文件
  // 如果是用<USERNAME>.github.io根仓库、或者自定义域名部署,直接写 '/data/file.json' 即可
  const response = await fetch(`/GITREPO/data/file.json`);
  // 增加请求状态校验,方便后续排查问题
  if (!response.ok) {
    throw new Error(`JSON资源加载失败,HTTP状态码:${response.status}`);
  }
  const docData = await response.json();
  const contentTarget = document.getElementById('doc-target');
  const tocTarget = document.getElementById('toc-target')
  createContent(tocTarget,contentTarget,docData);
})();
额外排查项

如果修改路径后依然无法正常加载,逐一核对以下配置:

  • 确认gh-pages分支的部署对应目录下,确实存在data/file.json文件,没有被.gitignore规则忽略、没有在构建部署流程中被过滤
  • 确认路径和文件名的大小写完全匹配,GitHub Pages服务的路径是大小写敏感的,File.json和file.json会被识别为两个不同资源
  • 确认仓库Pages设置中,部署源选择的目录和你存放JSON文件的目录一致,不要出现文件放在分支根目录,但部署源选了/docs目录的情况
  • 可以直接在浏览器地址栏输入修改后的JSON资源地址,能正常返回JSON文本内容就说明资源路径配置正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:45:35