在部署时,Heroku表示即使我已登录,也无法找到API密钥

时间:2018-04-13 19:29:09

标签: heroku heroku-cli

当我运行heroku deploy:jar app.jar --app app时,我收到此错误:

$ heroku deploy:jar build/libs/app.jar --app app
Uploading app.jar
-----> Packaging application...
       - app: app
       - including: build/libs/app.jar
 ! ERROR: Could not get API key! Please install the toolbelt and login with `heroku login` or set the HEROKU_API_KEY environment variable.
 !        Re-run with HEROKU_DEBUG=1 for more info.
 ▸    There was a problem deploying to app.
 ▸    Make sure you have permission to deploy by running: heroku apps:info -a app

这里有环境信息:

On a Mac.
Heroku version: heroku-cli/6.16.12 (darwin-x64) node-v9.11.1
Heroku plugins: heroku-cli-deploy 0.4.0
java version "1.8.0_131"
node version: v4.9.1

我已尝试多次运行heroku login。运行之后,我可以运行heroku apps:info -a app并列出信息。我推断这意味着我已经登录了。

我的登录在另一台计算机上工作,因此我认为它是本地配置问题,而不是帐户问题。当我设置HEROKU_DEBUG=1时,它不会提供其他信息。

2 个答案:

答案 0 :(得分:2)

问题在于heroku login。它会创建一个包含您的登录名和令牌的文件~/.netrc

这个生成的文件在另一个mac上的格式(我提到的部署工作正常的mac)如下:

machine api.heroku.com
  password ...
  login ...
machine git.heroku.com
  password ...
  login ...

出现上述问题的mac上相同生成文件的格式如下:

machine api.heroku.com login ... password ...
machine git.heroku.com login ... password ...

显然,两种格式都适用于大多数Heroku命令,例如查看应用程序等。但是对于deploy命令(需要heroku-cli-deploy插件,只能接受第一种格式。

因此,基本上heroku cli接受新行和空格作为端点,登录和令牌之间的分隔符。但部署插件只接受新行。由于某种原因,heroku login正在使用空格;所以heroku命令正在工作,而heroku deploy命令则没有。

答案 1 :(得分:0)

在Ubuntu中会有同样的错误的另一个原因。出于某种原因,在Ubuntu中,很容易进行需要sudo的jhipster cli安装,而heroku cli不允许使用sudo登录,因为浏览器无法通过sudo调用启动。而且很难弄清楚jhipster sudo安装出了什么问题,哪些特定文件现在由root拥有,等等。

但是,如果您不是从root用户(即不使用sudo)登录到heroku cli或不是从root用户(即不使用sudo)创建了api键变量,则如果您请求,部署将失败并显示上述错误带sudo的jhipster:

sudo hipster heroku 

如果您不使用sudo进行尝试,它将挂起

Installing Heroku CLI deployment plugin

要使其正常运行,请运行

sudo -E jhipster heroku

和-E会将您的api键变量传递给sudo执行

相关问题