サブドメインのコードを現在のメインコードベースによってインポートされる独自のプロジェクトに移動したいのですが、サブドメインのコードをメインプロジェクトに正常にインポートできました私が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つだけあるようにしてください。 – JimB
これは2つのコードグループです。メインサイトはプロジェクト、サブドメインサイトはパッケージです。 – dingalingchickenwiing
両方が同じプログラムにインポートされている場合、それらはビルドツールに関する限り別物ではありません。 – JimB