4

Go アプリケーションを Heroku にデプロイしたいのですが、次のようなエラーが発生しました。

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/Godeps.jsongodeps save。どうしたの?公式の 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"
        }
    ]
}
4

1 に答える 1

4

はい、すべての依存関係をリポジトリに含める必要があります。

実際、実行時にgodep save ./...go 1.5 以降を使用している場合、Godep は自動的に名前付きのディレクトリvendor(リポジトリのルート ディレクトリ内) に依存関係を配置します。Godep と vendor ディレクトリの両方をリポジトリにコミットする必要があります。

補足として、ベンダー ディレクトリを追加する際に -f フラグを使用して、その中のすべてのファイルを追加します。gitignore ファイルによっては一部のファイル/ディレクトリがコミットされず、heroku でビルドが失敗する可能性があるため、これが必要です。標準的な方法として、godep を使用して依存関係を追加した後、次のコマンドを実行できます。

git add -f vendor/Godep/

git commit -a -m "依存関係のベンダー化"

于 2016-08-14T08:30:48.307 に答える