解决“无法读取属性,未定义”错误

问题描述

我有这个功能

  function getAvailableProviders(tmpDir,snips,processRepo) {
  const octokit = require("@octokit/rest");
  octokit.repos.listForOrg(
    { org: "terraform-providers",type: "public",per_page: 100 },(error,result) => {
      result.data.forEach((element) => {
        processRepo(tmpDir,element.name,iterateOnDocFiles);
      });
    },);
}

运行程序时,我从打字稿编译器收到此错误

(node:15713) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'listForOrg' of undefined

问题是根据octokit文档确定的repos.listForOrg

https://octokit.github.io/rest.js/v18#repos-list-for-org

我只是在尝试学习(打字稿和节点),同时又重新创建了原始开发者遗弃的东西。根据octokit文档,我有我的require声明。它没有联系到api。我还需要在节点项目中安装其他东西才能使其正常工作吗?

解决方法

我认为您需要对 require 稍作更改并在 require 之后添加 const octokit = new Octokit();(在您的示例中作为第 3 行插入):

  function getAvailableProviders(tmpDir,snips,processRepo) {
  const { Octokit } = require('@octokit/rest'); // <-- change this line
  const octokit = new Octokit(); // <-- add this line
  octokit.repos.listForOrg(
    { org: "terraform-providers",type: "public",per_page: 100 },(error,result) => {
      result.data.forEach((element) => {
        processRepo(tmpDir,element.name,iterateOnDocFiles);
      });
    },);
}

octokit readme

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...