node.js - 传递给 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:结束
解决方案
如果您使用 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/安装认证
推荐阅读
- html - 图标不会显示在台式计算机的页脚中
- node.js - Gatsby 站点在构建期间不可用
- android - 如果绑定适配器提供了 getter,请检查适配器是否正确注释以及参数类型是否匹配
- python-3.x - 优先级相同时python PriorityQueue添加对象失败
- lambda - 如何在 Python 中使用 lambda 函数生成随机的整数元组?
- git - 如何创建通过 Git GUI 打开本地 repo 的快捷方式?
- python - 如何在其他函数中使用函数中的变量而不将变量放在类的 __init__ 方法中?
- angular - 角度服务未将数据分配给局部变量
- sql - 在 PHP 中显示错误消息,而不是在重复条目上显示服务器错误消息
- javascript - React:如何在 Popup 关闭时发送数据?