使用GitHub REST API创建仓库项目失败:提示仓库项目已禁用
解决GitHub API创建项目报错“Projects are disabled for this repository”的问题
核心问题:混淆了经典项目与新版Projects v2的API端点
你调用的POST /repos/{owner}/{repo}/projects是经典仓库项目的API接口,而GitHub当前主推的是新版Projects v2,两者的API、权限配置和仓库设置完全不互通。报错提示“项目已禁用”,大概率是因为仓库未开启经典项目功能,或是你想操作新版项目却用了旧接口。
分场景解决方案
场景1:创建经典仓库项目
- 开启仓库经典项目功能:进入目标仓库的「Settings」→「Features」,找到标注为“经典”的「Projects」选项并勾选启用。
- 确认权限:检查GitHub App的
Repository projects权限是否设为「Read and write」。 - 代码无需修改,重新运行即可。
场景2:创建新版GitHub Projects v2
- 更换API端点:将请求路径改为新版项目接口
POST /repos/{owner}/{repo}/projects-v2,参数调整如下(name参数仍可用):for await (const { octokit, installation } of app.eachInstallation.iterator()) { const result = await octokit.request('POST /repos/{owner}/{repo}/projects-v2', { owner: owner, repo: repo, name: projectName }); console.log("Project: ", result.data.name) } - 确认权限:检查GitHub App的
Projects权限是否设为「Read and write」(这是独立于经典项目的权限项)。 - 升级octokit版本:确保使用的
octokit/rest.js是最新版,旧版本可能未收录v2的API定义。
额外排查点
- 确认GitHub App安装时,目标仓库已被纳入安装范围,无遗漏。
- 验证token权限:可通过octokit调试功能打印请求头中的token,确认其包含所需权限。
内容的提问来源于stack exchange,提问作者JerryK
相关产品推荐
相关产品推荐

