2017-11-17 118 views
2

我在檢測應用程序二進制文件時遇到了一些麻煩。Heroku找不到Go應用程序

例如,我的項目被稱爲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

這個二進制在'$ GOPAHT存在/ bin'地方,但最有可能的一個新的構建/安裝過程中不產生是,所以不會在heroku上找到。如果您需要幫助,我們需要知道您部署的回購計劃以及您的heroku配置。 – icza

+0

@icza這是我用來學習Go的最基本的代碼庫。以下是更多信息:https://gist.github.com/najmsheikh/a46b7de388d1a798aa8b7c3dfa1bbdba –

+0

'glide.yaml'中的包不正確。將'GoServer'重命名爲'goserver'(lowercaed)並將package的第一行更改爲'package:goserver'。然後在'Procfile'中使用'goserver'。 – icza

回答

2

您的glide.yaml中的程序包不正確,請將其更改爲代碼所在的程序包,即GoServer。這是通過滑動進行安裝的軟件包。由於這與您的代碼的軟件包(文件夾)不匹配,因此GoServer未安裝,並且在heroku上不可用作爲可執行文件。它在本地爲您(或您的IDE)編譯並安裝GoServer,並將可執行文件放入$GOPATH/bin,因此可以在本地運行。

所以glide.yaml第一行應該是:

package: GoServer 
相關問題