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

React构建Octokit.js库报错:Cannot read properties of null (reading 'body')

React + Octokit 生产构建错误排查与解决

问题原因

  1. Octokit适配层bug:开发环境加载未压缩的开发版代码,生产构建时webpack自动选用@octokit/core的dist-web适配层,该版本存在环境依赖缺陷,导致请求对象初始化失败为null,触发读取body的错误(报错中的body是代码压缩后的变量名,源码中不会直接显示)。
  2. 构建流程中断:Octokit的代码错误导致webpack构建未完成,因此build文件夹未生成最终的index.html文件。
  3. 无效配置/环境变量缺失:生产构建时未正确设置NODE_ENV=production,或Octokit初始化时传入了null/undefined的无效参数(如未正确加载的GitHub令牌),触发内部逻辑错误。

解决方案

1. 修复Octokit依赖与导入

  • 替换为Web友好的封装库:卸载@octokit/core,安装@octokit/rest(专为REST API调用优化,web环境兼容性更好):
    npm uninstall @octokit/core
    npm install @octokit/rest
    
    代码中更新导入逻辑:
    import { Octokit } from "@octokit/rest";
    
  • 强制指定Node适配层:若坚持使用@octokit/core,修改导入路径规避dist-web的bug:
    import { Octokit } from "@octokit/core/dist-node/index.js";
    

2. 修复构建环境配置

  • 明确设置生产环境变量:修改package.json中的build命令:
    {
      "scripts": {
        "build": "NODE_ENV=production react-scripts build"
      }
    }
    
    Windows系统调整为:
    {
      "scripts": {
        "build": "set NODE_ENV=production && react-scripts build"
      }
    }
    
  • 清理依赖缓存:删除旧依赖文件,重新安装避免缓存冲突:
    rm -rf node_modules package-lock.json
    npm install
    

3. 修正Octokit初始化代码

  • 避免传入无效参数:确保初始化时不传递null/undefined值,GitHub令牌需用REACT_APP_前缀(符合create-react-app环境变量规则):
    const octokit = new Octokit({
      auth: process.env.REACT_APP_GITHUB_TOKEN || undefined,
    });
    

4. 验证构建结果

修复完成后重新执行构建:

npm run build

若构建成功,build文件夹会生成完整的index.html及静态资源,运行生产版本验证功能正常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:07:06