PHP エディター Banana がコンパイル エラーに対処しているときに、「go mod tiny」コマンドで bazel によって生成された protobuf パッケージが見つからないというメッセージが表示されることがあります。この問題の解決策は実際には非常に簡単で、対応する protobuf パッケージの依存関係を go.mod ファイルに手動で追加するだけです。 「go mod tiny」コマンドを実行して依存関係を更新することで、再度コンパイルすることでパッケージ消失の問題が解消されます。この方法はシンプルかつ効果的であり、開発者がコンパイル エラーを迅速に解決し、開発効率を向上させるのに役立ちます。
ディレクトリに .proto
protobuf 定義ファイルがあり、以下に示すように bazel を使用してそこから go ライブラリを構築しています (## を使用)以下 #gazelle 生成された
build.bazel ファイル):
リーリー
//icoyote/proto:proto に依存しており、モジュール内で
go mod tiny を実行すると、パッケージ
github が見つからないというメッセージが表示されます。 com/acme/icoyote/proto:
リーリー
p>Bazel 統合のない IDE (Bazel プラグインのない vscode、goland/intellij など) も問題を発生します
###私は何をしますか?
解決策
build ファイルで protoc を使用するために発生します。
.go## を生成します。 #go_proto_library
ルールの下にあるファイルですが、go_library
ルールで使用される bazel - bin
の下の一時ディレクトリにのみ書き込まれます。また、go mod tiny
は bazel-bin
を調べていないようです (おそらくシンボリックリンクであるためですが、そうであれば、これらのファイルは go.mod## に相対的です # 場所へのパスは次のとおりですすべて間違っています)
1 つのオプションは、
protoc を自分で呼び出して go ファイルを手動で生成し、
build## 内の
ルールと go_proto_library
ルールを削除することです。 # file を作成し、生成されたファイルをビルドするように go_library
ルールを変更します。 .proto
ファイルを変更するたびに protoc
を手動で再実行する必要があるため、これは次善の策です (ファイルを //go:generate
に置いた場合)ディレクティブを使用している場合は、gogenerate
) を再実行する必要があります。
代わりに、次のことができます:
ファイル
empty.go
.proto
ファイルが含まれるディレクトリに追加します。次のようになります:
次に、ngazelle
に go_library## は試行されません) # ルールが
build ファイルに追加されました)。これを行うには、
build ファイルに次のコードを追加します。
リーリー
黙るにはこれで十分です
整頓してください。
これにより、IDE はインポートに関して文句を言うこともなくなりますが、パッケージ内にあるものを参照するときにエラーが発生することは変わりません。 Bazel プラグインを使用した Goland または Intellij の優れたアイデアを優先して IDE を放棄したくない場合は、手動の
protoc の下に bazel へのシンボリックリンクを作成し、生成された .go
ファイルの場所を書き出して、
を強制的に実行する方法があるかもしれません。フォローする ありますが、まだ試していません。これを実行してうまくいった場合は、共有してください。
以上が`go mod tiny` は、bazel によって生成された protobuf パッケージが見つからないと文句を言いますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。