Go 应用程序的依赖项未通过 Heroku 上的 godep 安装
Dependencies for Go app aren't installed through godep on Heroku
我想在 Heroku 上部署 Go 应用程序,但是我得到了这样的错误:
remote: -----> Go app detected
remote: -----> Checking Godeps/Godeps.json file.
remote: -----> Using go1.6.3
remote: !! Installing package '.' (default)
remote: !!
remote: !!
remote: -----> Running: go install -v -tags heroku .
remote: main.go:9:2: cannot find package "github.com/go-martini/martini" in any of:
remote: /app/tmp/cache/go1.6.3/go/src/github.com/go-martini/martini (from $GOROOT)
remote: /tmp/build_3c0222e075a91a3363e590a0169d6fb6/.heroku/go/src/github.com/go-martini/martini (from $GOPATH)
它适用于我的本地环境,我使用 godeps save
命令向 Godeps/Godeps.json
添加了依赖项。有什么问题?我注意到官方 go-getting-started 存储库有 vendor
文件夹,这是否意味着我必须将所有依赖项都放入我的存储库?
这是我的 Godeps/Godeps.json
:
{
"ImportPath": "github.com/mikamikuh/oauth2-server-tester",
"GoVersion": "go1.6",
"GodepVersion": "v74",
"Deps": [
{
"ImportPath": "github.com/codegangsta/inject",
"Comment": "v1.0-rc1-10-g33e0aa1",
"Rev": "33e0aa1cb7c019ccc3fbe049a8262a6403d30504"
},
{
"ImportPath": "github.com/go-martini/martini",
"Comment": "v1.0-185-gc257c41",
"Rev": "c257c412d547ac70fcaf5596c1a50a7cb832c1fc"
}
]
}
是的,您确实需要将所有依赖项都放入您的存储库中。
事实上,当你 运行 godep save ./...
并且你使用的是 go 1.5 或更高版本时,Godep 会自动将依赖项放在名为 vendor
的目录中(在你的 repo 的根目录中) .您需要将 Godep 和 vendor 目录提交到您的存储库。
旁注,添加供应商目录时使用 -f 标志将所有文件添加到其中。它是必需的,因为某些 files/directory 可能不会提交,具体取决于您的 gitignore 文件,这将导致 heroku 中的构建失败。作为标准做法,您可以在使用 godep 添加依赖项后执行以下命令。
git add -f vendor/ Godep/
git commit -a -m "Vendorizing dependencies"
我想在 Heroku 上部署 Go 应用程序,但是我得到了这样的错误:
remote: -----> Go app detected
remote: -----> Checking Godeps/Godeps.json file.
remote: -----> Using go1.6.3
remote: !! Installing package '.' (default)
remote: !!
remote: !!
remote: -----> Running: go install -v -tags heroku .
remote: main.go:9:2: cannot find package "github.com/go-martini/martini" in any of:
remote: /app/tmp/cache/go1.6.3/go/src/github.com/go-martini/martini (from $GOROOT)
remote: /tmp/build_3c0222e075a91a3363e590a0169d6fb6/.heroku/go/src/github.com/go-martini/martini (from $GOPATH)
它适用于我的本地环境,我使用 godeps save
命令向 Godeps/Godeps.json
添加了依赖项。有什么问题?我注意到官方 go-getting-started 存储库有 vendor
文件夹,这是否意味着我必须将所有依赖项都放入我的存储库?
这是我的 Godeps/Godeps.json
:
{
"ImportPath": "github.com/mikamikuh/oauth2-server-tester",
"GoVersion": "go1.6",
"GodepVersion": "v74",
"Deps": [
{
"ImportPath": "github.com/codegangsta/inject",
"Comment": "v1.0-rc1-10-g33e0aa1",
"Rev": "33e0aa1cb7c019ccc3fbe049a8262a6403d30504"
},
{
"ImportPath": "github.com/go-martini/martini",
"Comment": "v1.0-185-gc257c41",
"Rev": "c257c412d547ac70fcaf5596c1a50a7cb832c1fc"
}
]
}
是的,您确实需要将所有依赖项都放入您的存储库中。
事实上,当你 运行 godep save ./...
并且你使用的是 go 1.5 或更高版本时,Godep 会自动将依赖项放在名为 vendor
的目录中(在你的 repo 的根目录中) .您需要将 Godep 和 vendor 目录提交到您的存储库。
旁注,添加供应商目录时使用 -f 标志将所有文件添加到其中。它是必需的,因为某些 files/directory 可能不会提交,具体取决于您的 gitignore 文件,这将导致 heroku 中的构建失败。作为标准做法,您可以在使用 godep 添加依赖项后执行以下命令。
git add -f vendor/ Godep/
git commit -a -m "Vendorizing dependencies"