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

如何使用JSON调用Github API获取仓库最新Release,代码返回undefined如何解决

问题原因

你调用的https://api.github.com/repos/NAME/REPO/releases是GitHub的「获取仓库所有Release列表」接口,返回的JSON结构是Release对象组成的数组,不是单个Release对象。你直接访问根对象的tag_name属性,数组本身没有这个属性,自然返回undefined。

修正方法

最简修改(取最新发布版本)

把代码里读取属性的行修改为取数组第一个元素的tag_name即可:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var JS = JSON.parse(this.responseText);
    // 数组第一个元素就是最新发布的Release
    console.log(JS[0].tag_name)
  }
};
// 替换成实际的所有者名和仓库名
xmlhttp.open("GET", "https://api.github.com/repos/NAME/REPO/releases", true);
xmlhttp.send();

更稳妥的写法(兼容无Release、过滤预发布版本)

可以加一层判断,避免仓库无Release时报错,也可以自行过滤预发布版本:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var releaseList = JSON.parse(this.responseText);
    if(releaseList.length === 0) {
      console.log('该仓库暂无发布的Release');
      return
    }
    // 可选:过滤掉预发布版本,取最新的正式版
    var latestStable = releaseList.find(item => !item.prerelease)
    if(latestStable) {
      console.log(latestStable.tag_name)
    } else {
      console.log('该仓库暂无正式发布的Release')
    }
  }
};
xmlhttp.open("GET", "https://api.github.com/repos/NAME/REPO/releases", true);
xmlhttp.send();

额外注意

请求URL里的NAME是仓库所属的用户名/组织名,REPO是仓库名,需要替换成你实际要查询的仓库对应值,否则接口会返回404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:30:01