Heroku Golang - 命令 'main' 未找到。

4

我已经在Heroku上部署了一个Go API,并上传了一些代码;在我的procfile文件中,我有以下内容:

web: main

为了在Heroku上启动Go构建的二进制文件。当我在自己的计算机上构建它时,使用以下命令:
go build cmd/main.go

它在我的项目根目录下生成一个名为“main”的二进制文件,并且按预期工作,但是在Heroku上我遇到了问题。
app[web.1]: bash: main: No such file or directory

在Heroku上的构建过程看起来很好,它找到了我所有的依赖项并且安装/编译了所有内容。

2个回答

7
这个很简单,一旦我意识到了这一点;

仓库中的所有主要软件包都已编译,并将二进制文件放置在/app/bin目录中(该目录在PATH中)。 二进制文件以包含它们的目录命名。


是的,Heroku基本上执行的是"go install ./...",这样做会生成一个二进制文件,其名称与包含Go文件的目录相同,并将其声明为main包。 - David Budworth
我遇到了相同的错误,无法使其正常工作。我尝试了不同的名称,但什么也没有发生,仍然显示“未找到”... - franchb
如果这对其他人有帮助的话,它意味着需要一个类似于以下内容的 Procfile:"web:<app-directory-name>"。 - brianarpie

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

func main() {
    // your code here
}

很抱歉,一开始我完全忘记了这件事情,这让我困惑了一段时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接