我的项目“testheeroku7777”由两个文件组成。 main.go:
package main
import "fmt"
func main() {
fmt.Println("Hello world!")
}
Procfile:
web: testheeroku7777
当我推动时:
testheeroku7777> git push heroku master
它出错了:
Counting objects: 8, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 645.21 KiB | 5.92 MiB/s, done.
Total 8 (delta 1), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> App not compatible with buildpack: https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/go.tgz
remote: More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to testheeroku7777.
remote: To https://git.heroku.com/testheeroku7777.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/testheeroku7777.git'
我已阅读提供的链接,但我不知道此错误。
答案 0 :(得分:0)
Heroku没有在基本映像中安装Go运行时,因此需要您使用go buildpack来构建应用。但是,这还要求您使用诸如dep或govendor之类的销售工具,这意味着这个非常基本的应用程序本身不幸无法使用。
答案 1 :(得分:0)
此问题与Go的新依赖性管理系统有关。 Heroku正在您的项目中寻找一种依赖管理系统,但找不到。这就是为什么它会引发错误。即使您的项目很简单,Heroku也必须具有可以识别的依赖项管理系统。
使用Go模块是依赖项管理的officially-sanctioned method。但是–这是一个很大但又令人惊讶的Go模块怪癖,因为Go模块不适用于GOPATH
内的项目。
开始使用Go时,开发人员做了一件大事,将所有项目都放在一个GOPATH
位置。所有文档都对此进行了明确说明-这是go代码必须存储的地方,不会在其他任何地方运行。但是现在,如果您要编写需要Go模块的代码,而任何正在heroku上运行的代码都需要Go模块,则该代码的目录必须位于GOPATH
之外。我不知道为什么他们没有更明确地说明这一点,但这似乎就是事实。
因此,要使代码正常工作,您需要做的是:
将您的项目移至GOPATH
以外的地方–例如,
以独创性的名义。
创建一个与您当前名称相同的远程git存储库 项目。
然后通过在终端命令中键入创建go模块文件
在您的本地目录go mod init
github.com/myGithubUserName/myProjectName
接下来,通过在终端中键入git init
创建一个本地git存储库。
通过在命令行中输入git
remote add origin
http//www.github.com/myGithubUserName/myProjectName.git
来标识您先前创建的远程存储库。
终端。
编写一些出色的代码。
在提示符下键入git add . && git commit -m “first commit”
提交您的代码。
键入git push -u origin master
以更新远程存储库。
之后,而且只有在此之后,您才可以输入git push heroku master
。唯一的安慰是所有现在都应该顺利运行。
还有其他发布者提到的较早的依赖项管理系统,例如govendor
和dep
,但是Go模块是官方批准的方法,我想我们也都可以适应现在,以后再说。关于Go模块的最受欢迎的教程似乎就是这样的:https://roberto.selbach.ca/intro-to-go-modules/。搜索也会找到其他一些。