Go モジュールの Replace ディレクティブによるモジュール パスの不一致の克服
Go モジュールを使用する場合、パスの不一致が発生して問題が発生する可能性があります。 go mod tiny操作中。これは、競合するパッケージがサードパーティのエンティティである場合に特に困難になります。
課題:
特定のシナリオでは、プロジェクトによってインポートされたパッケージは、次のような別のパッケージに依存します。 import ステートメントで宣言されたパス (github.com/coreos/bbolt など)。ただし、指定されたパスからパッケージをフェッチすると、その go.mod ファイルは実際のパスが go.etcd.io/bbolt であることを示します。
この矛盾により、部分的なエラー メッセージに示されているようにエラーが発生します。
github.com/coreos/etcd/client: github.com/coreos/[email protected]: parsing go.mod: module declares its path as: go.etcd.io/bbolt but was required as: github.com/coreos/bbolt
解決策: Replace ディレクティブ
この問題を解決するには、go.mod ファイル内の replace ディレクティブを使用できます。このディレクティブを使用すると、競合するパッケージの正しいパスを指定できます。
この特定の状況を修正するには、go.mod ファイルの最後に次の行を追加します。
replace github.com/coreos/bbolt v1.3.5 => go.etcd.io/bbolt v1.3.5
この行は、バージョン 1.3.5 のパッケージ github.com/coreos/bbolt (バージョン番号は異なる場合があることに注意してください) を go.etcd.io/bbolt バージョン 1.3.5.
実装:
次のように replace ディレクティブを実装します:以上がReplace ディレクティブは Go モジュールのモジュール パスの不一致をどのように解決できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。