我在检测应用程序二进制文件时遇到了一些麻烦。
例如,我的项目名为GoServer,位于$GOPATH/src/GoServer
,其二进制文件(通过在项目目录中运行go install
创建)位于$GOPATH/bin/
现在,如果我尝试使用go run main.go
在本地运行实例,它就可以了。如果我使用Heroku Local工具包(heroku local
)在本地运行它,它也可以正常工作。但当它推送到Heroku的远程仓库并从那里打开页面时,它会崩溃。在日志中,它表示无法找到GoServer(bash: GoServer: command not found
)。
我该如何解决这个问题?我见过的大多数类似问题的线程都是指配置错误的GOPATH
,但是自从Heroku Local工作以来我似乎很好,但实际的远程设置并没有。
答案 0 :(得分:2)
glide.yaml
中的包不正确,请将其更改为您的代码所在的包,即GoServer
。这是通过滑行安装的软件包。由于这与您的代码的包(文件夹)不匹配,GoServer
没有安装,并且在heroku上不可用作可执行文件。当您(或您的IDE)编译和安装GoServer
并将可执行文件放入$GOPATH/bin
时,它在本地工作,因此可以在本地运行。
所以glide.yaml
中的第一行应该是:
package: GoServer