我正在关注这个Heroku / Go示例https://github.com/heroku-examples/go_queue_example以获取网络和工作者应用程序。
通过 heroku local 运行应用程序,但在部署到Heroku时,我得到以下 命令未找到错误 在日志中:
2016-03-20T11:55:51.029091+00:00 heroku[worker.1]: Starting process with command `apiworker`
2016-03-20T11:55:51.603896+00:00 heroku[worker.1]: State changed from starting to up
2016-03-20T11:55:52.842882+00:00 app[worker.1]: bash: apiworker: command not found
2016-03-20T11:55:53.624937+00:00 heroku[worker.1]: Process exited with status 127
2016-03-20T11:55:53.634515+00:00 heroku[worker.1]: State changed from up to crashed
2016-03-20T11:58:56.772069+00:00 heroku[web.1]: State changed from crashed to starting
2016-03-20T11:58:56.986655+00:00 heroku[web.1]: Starting process with command `apiweb`
2016-03-20T11:58:58.389926+00:00 app[web.1]: bash: apiweb: command not found
2016-03-20T11:58:59.060779+00:00 heroku[web.1]: State changed from starting to crashed
2016-03-20T11:58:59.049447+00:00 heroku[web.1]: Process exited with status 127
Procfile:
web: apiweb
worker: apiworker
项目结构:
.
├── Godeps
│ ├── Godeps.json
│ └── Readme
├── Procfile
├── cmd
│ ├── apiweb
│ │ └── main.go
│ └── apiworker
│ └── main.go
├── vendor
<snip>
└── api.go
令人惊讶的是,我在文档,此处和其他地方搜索答案时收效甚微。任何帮助将不胜感激!
答案 0 :(得分:1)
有点晚了,但昨天我遇到了同样的问题,对我有用的是重新保存依赖项。
将主电源移至cmd后,您需要运行$ godep save ./cmd/...
,这当然会更新您的Godeps.json文件,但更重要的是它会添加/更新json中的"Packages"
字段,反过来由heroku的buildpack(link)用来运行$ go install
和$ godep go install
(link)。
在我重新保存我的依赖项之前,Godeps.json文件没有"Packages"
字段,因此buildpack只在项目的根文件夹中运行$ go install
而不安装cmd文件夹中的源,然后会导致command not found
错误。