Javascript 403 Github.js getSha中的文件大小大于~1MB时出错

Javascript 403 Github.js getSha中的文件大小大于~1MB时出错,javascript,github,github-api,http-status-code-403,github.js,Javascript,Github,Github Api,Http Status Code 403,Github.js,当我试图从大于~1MB的文件中获取SHA(以及随后获取BLOB)时,我遇到了403错误。文件大小有限制吗?代码如下: var gh = new GitHub({ username: username, password: password }); // get the repo from github var repo = gh.getRepo('some-username','name-of-repo'); // get promise repo.getSha('some-

当我试图从大于~1MB的文件中获取SHA(以及随后获取BLOB)时,我遇到了403错误。文件大小有限制吗?代码如下:

var gh = new GitHub({
    username: username,
    password: password
});

// get the repo from github
var repo = gh.getRepo('some-username','name-of-repo');

// get promise
repo.getSha('some-branch', 'some-file.json').then(function(result){

  // pass the sha onto getBlob
  return repo.getBlob(result.data.sha);

}).then(function(result){

  do_something_with_blob(result.data);

});

GitHub API说它支持大小高达100MB的blob,而我在中找不到任何关于文件大小限制的内容。此外,这些文件来自一个私有的Github repo。

它会抛出一个
403禁止的
错误,因为它使用该错误为不超过1Mo的文件提供结果。例如,下面将抛出403:

使用GET tree API,您可以在不下载整个文件的情况下获取文件sha,然后使用
repo.getBlob
(用于不超过100Mo的文件)

以下示例将使用get trees api获取指定文件(对于超过1Mo的文件)的父文件夹的树,按名称筛选特定文件,然后请求blob数据:

const accessToken = 'YOUR_ACCESS_TOKEN';

const gh = new GitHub({
  token: accessToken
});

const username = 'bertrandmartel';
const repoName = 'w230st-osx';
const branchName = 'master';
const filePath = 'CLOVER/tools/Shell64.efi'

var fileName = filePath.split(/(\\|\/)/g).pop();
var fileParent = filePath.substr(0, filePath.lastIndexOf("/"));

var repo = gh.getRepo(username, repoName);

fetch('https://api.github.com/repos/' +
  username + '/' +
  repoName + '/git/trees/' +
  encodeURI(branchName + ':' + fileParent), {
    headers: {
      "Authorization": "token " + accessToken
    }
  }).then(function(response) {
  return response.json();
}).then(function(content) {
  var file = content.tree.filter(entry => entry.path === fileName);

  if (file.length > 0) {
    console.log("get blob for sha " + file[0].sha);
    //now get the blob
    repo.getBlob(file[0].sha).then(function(response) {
      console.log("response size : " + response.data.length);
    });
  } else {
    console.log("file " + fileName + " not found");
  }
});

谢谢,它对公共回购有效,但我似乎无法获取私有回购的树(使用fetch),因为我得到了404错误。我猜这是因为fetch没有传递任何身份验证令牌。有没有一种方法可以使用Fetch传递令牌,或者使用gh对象中已经有令牌的方法获取树?@NickFernandez我已经在Fetch中添加了Authorization header更新了答案options@maugch它在哪里?