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

通过JavaScript+HTML调用GitHub API上传文件无效果且无报错,求解决

问题排查与解决

以下是你代码中可能存在的问题及对应解决方法:

  • 访问令牌权限不足
    你的GitHub访问令牌需要包含repo(私有仓库)或public_repo(公开仓库)权限。如果权限不够,API会返回无权限状态但可能没被你捕获。去GitHub的令牌设置页面检查权限,重新生成符合要求的令牌。

  • 未处理已存在文件的sha参数
    如果仓库中已经存在amogus.html文件,使用PUT请求更新时必须带上该文件当前的sha值(文件的版本哈希)。GitHub需要这个参数来确认你要覆盖的是哪个版本的文件,否则会静默失败。
    获取sha的方式:先发送GET请求到https://api.github.com/repos/你的用户名/你的仓库名/contents/amogus.html,在返回的JSON中提取sha字段,再把它加入到PUT请求的body中:

    body: JSON.stringify({
      message: "amogus",
      content: btoa("your text here"),
      sha: "获取到的文件sha值"
    })
    
  • 令牌格式错误
    检查你的Authorization头,不要保留大括号。正确格式应该是:

    Authorization: `Bearer 你的实际访问令牌字符串`
    
  • 未捕获请求错误
    你的代码只处理了请求成功的情况,没有捕获异常。添加catch块来查看错误信息,比如:

    function upload() {
      return fetch(
        `https://api.github.com/repos/MY-USERNAME/MY-REPO-NAME/contents/amogus.html`,
        {
          method: "PUT",
          headers: {
            Accept: "application/vnd.github+json",
            Authorization: `Bearer 你的令牌`
          },
          body: JSON.stringify({
            message: "amogus",
            content: btoa("your text here"),
            sha: "文件sha值(如果文件已存在)"
          })
        }
      ).then((res) => {
        // 检查响应状态码,GitHub API会返回对应状态码说明问题
        if (!res.ok) throw new Error(`HTTP错误:${res.status}`);
        return res.json();
      }).then(data => console.log(data))
        .catch(err => console.error("请求出错:", err));
    }
    

    这样就能在控制台看到具体的错误原因,比如权限问题、sha缺失等。

  • 仓库或文件路径错误
    确认MY-USERNAME、MY-REPO-NAME和文件路径amogus.html完全正确,大小写也要匹配(GitHub仓库名和路径是区分大小写的)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:49:56