【问题标题】:How to use Heroku config vars with GitHub to install remote private repo?如何使用 Heroku config vars 和 GitHub 来安装远程私有仓库?
【发布时间】:2025-12-02 16:30:01
【问题描述】:

我想从我的 React 应用程序的 package.json 文件中删除我的用户名和个人访问令牌。

正在安装的包是一个私有的远程 GitHub 存储库,我是它的所有者。

请求是通过 HTTPS 协议发出的。

例如:"react-trello": "https://username:token@github.com/username/react-trello.git#dev/branch"

我有一份从 GitHub 发出的 PAT。但我无法在项目的 package.json 文件中访问它们。

我应该使用 PAT 值创建 Heroku 配置变量吗? heroku config:set -a my-app GITHUB-TOKEN=466ghdf57

在 Heroku 配置中,您可以设置用于 GitHub 的变量名称。如何设置我的用户名、密码和令牌?作为 Heroku 配置变量?

例如:USERNAMEGITHUB-USERTOKENGITHUB-TOKEN

我尝试创建变量,例如USERNAMETOKENGITHUB_USER。但如果我从 package.json 文件中删除我的凭据,它就不起作用了。

例如:"react-trello": "https://github.com/username/react-trello.git#dev/branch".

我收到一个错误:Fatal: Could not read Username for "https://github.com"

我错过了什么吗?

【问题讨论】:

  • “用于 GitHub 的正确 Heroku 配置变量名称是什么?”——这是什么意思?你读过this吗?请阅读How to Ask
  • 我已经更新了问题 Chris。你能提供进一步的建议吗?

标签: github heroku package.json


【解决方案1】:

Heroku 不提供开箱即用的功能,package.json doesn't natively support environment variables

一种选择是将您的依赖项构建为 NPM 包并将其发布到私有包存储库,例如Gemfury,其Heroku addon has a free plan 支持单个私有模块。

简而言之,您可以使用https://npm-proxy.fury.io/APPID/ 向Gemfury 发送publish your module,然后使用npm loginnpm publish。然后,in the Heroku app 依赖于你的私有模块,添加一个 .npmrc 文件包含

always-auth=true
registry=https://npm-proxy.fury.io/APPID/
//npm-proxy.fury.io/APPID/:_authToken=${FURY_AUTH}

并设置一个 Heroku 配置变量 FURY_AUTH,其中包含您的 Gemfury 身份验证令牌。

这确实意味着您必须先更新您在 Gemfury 上发布的库,然后相关应用程序才能看到您对其所做的更改。无论如何,这可能是个好主意;依赖于特定的标记版本比依赖于可变分支更安全。

还有this workaround可以让你有效地将环境变量注入到你的package.json中,但是我没有尝试过。

【讨论】:

  • 解决方法实际上解决了这个问题。使用私人仓库时,绕过 GitHub 安全性没有问题。但是使用公共 repo - blob 包含 GitHub 个人访问令牌的凭据,因此它不起作用。谢谢克里斯。