【问题标题】:Heroku Golang - command 'main' not foundHeroku Golang - 找不到命令'main'
【发布时间】:2016-06-08 07:59:05
【问题描述】:

我在 Heroku 上安装了一个 Go API,我将一些代码推送到该 API;在我的 procfile 中,我有以下内容

web: main

为了在 Heroku 端启动 Go 构建的二进制文件。当我用

构建它时
go build cmd/main.go

它在我的项目根目录中生成一个名为“main”的二进制文件,并按预期工作,但在 Heroku 上我得到了

app[web.1]: bash: main: No such file or directory

Heroku 上的构建过程看起来不错,它会找到我所有的依赖项并安装/编译它们。

【问题讨论】:

    标签: heroku go buildpack


    【解决方案1】:

    当我意识到这一点后,这非常简单;

    repo 中的所有主要包都经过编译,并且二进制文件放置在 PATH 中的 /app/bin 目录中。 二进制文件以包含它们的目录命名。

    【讨论】:

    • 是的,Heroku 基本上会执行“go install ./...”,这正是这样做的,创建一个以包含 go 文件的目录命名的二进制文件,并将包声明为 main
    • 我有同样的错误,不能让它工作。我尝试了不同的名称,但没有任何反应,仍然是not found...
    • 如果这可能对其他人有所帮助,这意味着有一个 Procfile 看起来像:“web:
    【解决方案2】:

    另外需要注意的是:和其他 Go 程序一样,main.go 中的代码必须属于包main

    package main
    
    func main() {
        // your code here
    }
    
    

    恐怕一开始我完全忘记了这件事,这让我难过了一段时间。

    【讨论】:

      猜你喜欢
      • 2011-07-14
      • 2012-09-29
      • 2021-07-18
      • 2015-05-12
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-17
      • 2023-03-18
      相关资源
      最近更新 更多