首页 > 解决方案 > 传递给 createTokenAuth 的令牌不是字符串:octokit, auth-token

问题描述

我正在尝试构建一个 GitHub 应用程序并遵循https://probot.github.io/docs/https://octokit.github.io/rest.js/v17#authentication。它基本上是一个nodejs应用程序。

我没有使用 nodejs 或 typescript 甚至 probot 框架的经验。

PRIVATE_KEY_PATH 位于.env文件中,如下所示:

PRIVATE_KEY_PATH=my-app.2020-04-03.private-key.pem

.pem文件位于项目的根目录中

typeof 打印字符串: -------------TypeOf token ---- string

index.js

/**
 * This is the main entrypoint to your Probot app
 * @param {import('probot').Application} app
 */



        const{Octokit} = require("@octokit/rest");
        const{createAppAuth} = require("@octokit/auth-token");

         console.log('PRIVATE_KEY',process.env.PRIVATE_KEY_PATH);
         console.log('-------------TypeOf token ----', typeof process.env.PRIVATE_KEY_PATH)

         const appOctokit = new Octokit({
           authStrategy:createAppAuth,
           auth:{
             id:12345,
             privateKey: process.env.PRIVATE_KEY_PATH,
            //  privateKey: 'token ${process.env.PRIVATE_KEY_PATH}'
            }
         });

我不断收到以下错误:

10:52:51.166Z ERROR probot: [@octokit/auth-token] Token passed to createTokenAuth is not a string

无法通过互联网找到有关此主题的太多帮助。我什至尝试浏览 octokit https://github.com/octokit/auth-token.js/blob/master/src/index.ts的代码,看来我的代码没有做错任何事情。

除了文档之外,没有太多资源可以参考 GitHub 应用程序或 probot 框架的问题。StackOverflow 也只有大约 20-30 个与 GitHub 应用程序或 probot 框架相关的问题。

编辑 1:开始

运行以下代码:

/**
 * This is the main entrypoint to your Probot app
 * @param {import('probot').Application} app
 */

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

 const{createAppAuth} = require("@octokit/auth-token");

 console.log('PRIVATE_KEY',process.env.PRIVATE_KEY_PATH);
 console.log('-------------TypeOf token ----', typeof process.env.PRIVATE_KEY_PATH)

产生以下错误:

ERROR probot: appFn is not a function
  TypeError: appFn is not a function

编辑 1:结束

标签: node.jsgithub-apiprobotgithub-appoctokit-js

解决方案


如果您使用 Probot,则不需要加载自己的@octokit/rest或任何@octokit/auth-*包,它们都内置在 Probot 中

您是否尝试过https://probot.github.io/上显示的示例代码

module.exports = app => {
  app.on('issues.opened', async context => {
    const params = context.issue({
      body: 'Hello World!'
    })
    await context.github.issues.createComment(params)
  })
}

Probot 会自动读取你的.env文件内容,查找PRIVATE_KEY_PATH环境变量,读取该位置的文件内容,并为你设置 JWT/安装认证


推荐阅读