Heroku的。 bash:apiworker:找不到命令

时间:2016-03-20 12:37:55

标签: heroku go

我正在关注这个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

令人惊讶的是,我在文档,此处和其他地方搜索答案时收效甚微。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

有点晚了,但昨天我遇到了同样的问题,对我有用的是重新保存依赖项。

将主电源移至cmd后,您需要运行$ godep save ./cmd/...,这当然会更新您的Godeps.json文件,但更重要的是它会添加/更新json中的"Packages"字段,反过来由heroku的buildpack(link)用来运行$ go install$ godep go installlink)。

在我重新保存我的依赖项之前,Godeps.json文件没有"Packages"字段,因此buildpack只在项目的根文件夹中运行$ go install而不安装cmd文件夹中的源,然后会导致command not found错误。