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

Octokit仅返回单个Pull Request而非所有Issues问题排查求助

嘿,我看你这里踩了个小坑——你用错方法啦!

repo.getIssueEvents() 这个方法根本不是用来获取仓库Issue列表的,它的作用是获取仓库里和Issue/PR相关的操作事件(比如某人评论了Issue、PR被合并、Issue被关闭这类动作记录),而且GitHub API默认分页返回第一页的30条数据,你看到的“第一个Pull Request”其实只是第一页事件里的第一条而已,和你想要的Issue列表完全是两回事。

想要获取仓库的所有Issue,你应该用Octokit专门的 issues.listForRepo() 方法,它才是用来拉取仓库Issue(包括PR,因为GitHub里PR本质上也是一种Issue)的官方接口。我给你修正一下代码:

首先确保你安装的是正确的Octokit包(现在官方推荐用@octokit/rest):

npm install @octokit/rest

然后修改你的代码:

const { Octokit } = require("@octokit/rest");

async function retrieveIssues(owner, repoName) {
  // 初始化Octokit,这里更推荐用个人访问令牌(在GitHub设置里生成),比明文用户名密码安全
  const octokit = new Octokit({
    auth: "你的个人访问令牌"
    // 要是一定要用用户名密码,改成:auth: "username:password"
  });

  try {
    // 获取仓库的所有Issue,支持各种过滤参数
    // 如果你只想获取纯Issue(排除PR),可以加上 filter: "all" 参数
    const allIssues = await octokit.paginate(octokit.issues.listForRepo, {
      owner: owner,
      repo: repoName,
      state: "all", // 可选值:open/closed/all,默认是open
      per_page: 100, // 每页最多返回100条,默认30条
    });

    console.log("仓库所有Issue:", allIssues);
  } catch (err) {
    console.error("获取Issue失败:", err);
  }
}

// 调用示例,替换成你要查询的仓库所有者和仓库名
retrieveIssues("octocat", "Hello-World");

这里用了octokit.paginate()方法,它会自动帮你处理GitHub API的分页问题——如果仓库里的Issue超过100条,它会自动拉取所有页的数据并合并成一个数组,不用你自己去处理分页逻辑。

另外补充一下:如果你用的是旧版本的Octokit(比如github-api包),那用法会有点不一样,但核心逻辑还是一样的:找专门获取Issue列表的方法,而不是事件方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:19:56