Go モジュールで「バージョンのない置換モジュールはディレクトリ パスである必要があります」エラーが発生するのはなぜですか?

Barbara Streisand
リリース: 2024-11-07 06:14:02
オリジナル
910 人が閲覧しました

Why Does

Go モジュールと置換のとらえどころのなさ

Go モジュールの領域では、replace ディレクティブはローカルで開発されたパッケージを置き換えることを約束します。リモートの場合は、実験やトラブルシューティングをしながら独自のコードを操作できるようになります。ただし、経験があるように、バージョンが指定されていないパッケージを置き換えるのは面倒な作業であることがわかります。

表示されたエラー メッセージ、「バージョンのない置き換えモジュールはディレクトリ パス (ルート化されているか、. で始まる) である必要があります。」 」は、replace ディレクティブに提供されるパスがモジュールのルートに対して絶対パスまたは相対パスである必要があるという重要な要件を強調しています。

パスの混乱を克服する

パスの難題が発生しますGo モジュールの構造から見てみましょう。 go.mod ファイルは中心的な役割を果たし、モジュールのアイデンティティとその依存関係を確立します。 go.mod ファイルと同じモジュール内に存在するパッケージは、置換することなく直接参照できます。ただし、モジュールの外部のパッケージを扱う場合は、replace ディレクティブが機能します。

あなたの場合、mypack という名前のローカル パッケージを利用することを目的としていました。これを実現するには、go.mod ファイルで次の replace ディレクティブを指定しました:

replace mypack -> ./src/mypack
ログイン後にコピー

残念ながら、このパスはモジュールのルートに対して絶対パスでも相対パスでもありません。 「./」プレフィックスは、モジュールのルートと同じではない、現在の作業ディレクトリに対する相対パスを表します。

Harmony へのパスの確立

この問題を修正するには、次の手順に従ってください:

  1. mypack を go モジュールに変換します: mypack フォルダー内に go.mod ファイルを作成します。これにより、mypack が独立したモジュールとして確立されます。
  2. 絶対パスまたはモジュールのルートからの相対パスを指定します。 go.mod ファイルで、絶対パスまたは絶対パスを使用するように replace ディレクティブを変更します。 mypack への相対パス。たとえば、mypack がモジュールのルートの兄弟である場合、次のように使用できます。
replace mypack -> ../mypack
ログイン後にコピー

追加の考慮事項

replace ディレクティブが意図されていることに注意してください。一時的なローカルオーバーライド用。永続的な置換を行う場合は、ベンダー ツールを使用するか、mypack をモジュールに明示的にベンダーすることを検討してください。

関連リソース:

  • 別のモジュールの「GOPATH」の外側にあるモジュール?

以上がGo モジュールで「バージョンのない置換モジュールはディレクトリ パスである必要があります」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!