トップレベルおよびサブモジュールのインポートとの Go モジュールの依存関係の競合を解決する
この問題は、トップレベルのモジュールと次のいずれかが発生した場合に発生します。そのサブモジュールは異なるバージョンとして個別にインポートされるため、依存関係の競合が発生します。プロジェクトに github.com/foo/bar と github.com/raz/mataz という 2 つの依存関係があるシナリオを考えてみましょう。 go mod download を実行すると、サブモジュールが存在するため、github.com/shared/dependency の 2 つの異なるバージョンがダウンロードされます。
ダウンロードしたモジュールを検査すると、複数のダウンロードされたバージョンが明らかになります:
この不一致により、github.com/ をインポートしようとすると、あいまいなインポート エラーが発生します。共有/依存関係/API。両方のディレクトリに競合するバージョンが存在するため、Go ツールはどちらのバージョンを使用するかを決定できません。
解決策: 依存関係バージョンのアップグレード
この問題の根本原因は、多くの場合、次のとおりです。競合する依存関係内の pre-go モジュールのバージョン管理に関連します。次の行を go.mod ファイルに追加すると、競合する依存関係で go-module 対応バージョンの使用が強制されます:
replace ( github.com/shared/dependency => github.com/shared/dependency v1.2.0 )
これにより、事実上、github.com/shared/dependency への参照が go と互換性のあるバージョンを使用するように強制されます。モジュールを使用して、依存関係の競合の問題を解決します。共有依存関係へのすべての参照が go-module 対応バージョンに転送されるため、このソリューションは機能することに注意することが重要です。
以上がGo モジュールのトップレベルおよびサブモジュールのインポートとの依存関係の競合を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。