Node.js使用Octokit调用GitHub API报错:Octokit不是构造函数怎么办
解决"TypeError: Octokit is not a constructor"问题
错误原因
你遇到的问题是Octokit包的导入方式不正确。当前官方维护的Octokit包(如@octokit/core或@octokit/rest)并非默认导出构造函数,而是通过命名导出提供Octokit类,直接使用require("octokit")无法获取到可用的构造函数。
解决方案
1. 安装正确的Octokit包
先卸载可能存在的旧版废弃包,安装官方维护的版本:
npm uninstall octokit # 安装轻量核心库 npm install @octokit/core # 或安装包含完整REST API封装的版本 npm install @octokit/rest
2. 修正导入语句
根据安装的包,替换原导入代码:
- 使用
@octokit/core时:
const { Octokit } = require("@octokit/core");
- 使用
@octokit/rest时:
const { Octokit } = require("@octokit/rest");
3. 简化冗余的Promise嵌套
你的代码存在不必要的new Promise嵌套(async函数本身已返回Promise),简化后代码更易读:
const { Octokit } = require("@octokit/core"); async function fileFetch() { try { const octokit = new Octokit({ auth: "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", // 注意:生产环境不要硬编码token,改用环境变量 }); const response = await octokit.request( `GET /repos/HexaInnovLab/Rapidx_Documentation/contents/website/docusaurus.config.js?ref=master` ); console.log(response); return "success"; } catch (error) { console.log(error); return "error"; } } fileFetch();
额外提示
- 不要在代码中硬编码GitHub个人访问令牌,建议用环境变量(如
process.env.GITHUB_TOKEN)存储敏感信息,避免泄露风险。
内容的提问来源于stack exchange,提问作者user19672461
相关产品推荐
相关产品推荐

