2016-12-10 4 views
-1

サブドメインのコードを現在のメインコードベースによってインポートされる独自のプロジェクトに移動したいのですが、サブドメインのコードをメインプロジェクトに正常にインポートできました私がGorilla Muxコードを追加するまで。たとえば、この作品:プロジェクト間で型の競合が発生する

// imports and non-relevant routes removed for simplicity 
r := mux.NewRouter() 
// Primary site routes here... 
s := r.Host("subdomain-regex-here").Subrouter() 
s.HandleFunc("/", people.Index) 
http.ListenAndServe("localhost:8080", r) 

しかし、プライマリサイトからmux.Routerオブジェクトに渡し、私は自身のプロジェクトにサブドメインを移動し、それをインポートし、LoadRoutesを呼び出す()関数で、私が受け取りますエラー。ここでは、コードです:

// Primary Project 
r := mux.NewRouter() 
// Primary site routes here... 

// function located in the subdomain go project, which is imported 
func LoadRoutes(host string, r *m.Router) { 

    s := r.Host(host).Subrouter() 
    s.HandleFunc("/", people.Index) 
    s.HandleFunc("/people", people.Index) 
    s.HandleFunc("/person/new", people.New) 
} 

#コマンドライン引数 ./main.go:25:R(タイプ* "primary_site /ベンダー/ github.com /ゴリラ/ MUX" .Router)を使用することはできませんとして「subdomain_site/vendor/github.com/gorilla/mux」と入力します。router.LoadRoutesの引数に戻ります。

2つの別々のプロジェクトから2つのインスタンスが競合しているようです。サブドメインサイトからプライマリサイトにのみパッケージをインポートしますが、それ以外の方法ではインポートできません。この正確なコードは、私が単一のプロジェクトでそれを持っている限り完全に動作しますが、プロジェクトを分割しようとすると、破損します。

私はmux.NewRouter()のインスタンスを渡すので、なぜ私は競合していますか?

+1

このような理由から、プロジェクトにトップレベルのベンダーディレクトリが1つだけあるようにしてください。 – JimB

+0

これは2つのコードグループです。メインサイトはプロジェクト、サブドメインサイトはパッケージです。 – dingalingchickenwiing

+0

両方が同じプログラムにインポートされている場合、それらはビルドツールに関する限り別物ではありません。 – JimB

答えて

2

プロジェクトに2つのベンダーディレクトリがあります。パッケージ間でベンダー型を共有するには、トップレベルの単一のベンダディレクトリにそれらをフラット化する必要があります。 subdomain_site/vendorを削除して、メインのpacakageのベンダーディレクトリのみを使用してください。

+0

これは2つの別々のプロジェクトです。 Src/proj1とsrc/proj2。彼らは同じプロジェクトではありません。 – dingalingchickenwiing

+0

@dingalingchickenwiingサブドメインのサイトをプライマリサイトにインポートすると、サブドメインのサイトが同じプログラムの一部になります。好きなものを呼び出してください。しかし、同じプロジェクトの複数のベンダのディレクトリは、このような型の不一致のエラーを引き起こします。 – JimB

+0

私は新しいので間違った用語を使用しているかもしれませんが、両方のプロジェクトが$ GOPATH/srcの下で同じフォルダレベルであることを説明しようとしました。たとえば、$ GOPATH/src/proj1と$ GOPATH/src/proj2です。あなたが言ったことが真実ならば、私が今までに構築したすべてのプロジェクトは、実際には同じプロジェクトの一部となり、プロジェクト間には区別がありません。 – dingalingchickenwiing

関連する問題