通过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
相关产品推荐
相关产品推荐

