Go モジュールと置換のとらえどころのなさ
Go モジュールの領域では、replace ディレクティブはローカルで開発されたパッケージを置き換えることを約束します。リモートの場合は、実験やトラブルシューティングをしながら独自のコードを操作できるようになります。ただし、経験があるように、バージョンが指定されていないパッケージを置き換えるのは面倒な作業であることがわかります。
表示されたエラー メッセージ、「バージョンのない置き換えモジュールはディレクトリ パス (ルート化されているか、. で始まる) である必要があります。」 」は、replace ディレクティブに提供されるパスがモジュールのルートに対して絶対パスまたは相対パスである必要があるという重要な要件を強調しています。
パスの混乱を克服する
パスの難題が発生しますGo モジュールの構造から見てみましょう。 go.mod ファイルは中心的な役割を果たし、モジュールのアイデンティティとその依存関係を確立します。 go.mod ファイルと同じモジュール内に存在するパッケージは、置換することなく直接参照できます。ただし、モジュールの外部のパッケージを扱う場合は、replace ディレクティブが機能します。
あなたの場合、mypack という名前のローカル パッケージを利用することを目的としていました。これを実現するには、go.mod ファイルで次の replace ディレクティブを指定しました:
replace mypack -> ./src/mypack
残念ながら、このパスはモジュールのルートに対して絶対パスでも相対パスでもありません。 「./」プレフィックスは、モジュールのルートと同じではない、現在の作業ディレクトリに対する相対パスを表します。
Harmony へのパスの確立
この問題を修正するには、次の手順に従ってください:
replace mypack -> ../mypack
追加の考慮事項
replace ディレクティブが意図されていることに注意してください。一時的なローカルオーバーライド用。永続的な置換を行う場合は、ベンダー ツールを使用するか、mypack をモジュールに明示的にベンダーすることを検討してください。
関連リソース:
以上がGo モジュールで「バージョンのない置換モジュールはディレクトリ パスである必要があります」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。