当我运行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
时,它不会提供其他信息。
答案 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执行