gRPCurl 1 を使ってリクエストを送る際に、 reflection を機能を使わずに protobufs のファイルを読み込もうとすると

1
Failed to process proto source files.: could not parse given files: ~ no such file or directory

とエラーがでてコマンドが実行できなかった。

対処方法としては grpcurl コマンドを実行する際に、-proto フラグを利用するだけではなく、-import-path フラグを指定する必要がある2

-import-pathフラグの指定により、参照する protobufs の依存関係のパスを grpcurl に伝えることで上記のエラーが解消される。

例えば、protobufs の内部で

1
import "~/---.proto"

のように他の protobufs を import していると上記のエラーの発生原因となる。

つまり、-import-pathを指定しないと、import 文実行時に grpcurl 内部で、参照する protobufs の root path が不明なので、パスがうまく処理されずに import 文の実行処理がコケてしまうと理解。


  1. fullstorydev/grpcurl: Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers ↩︎

  2. Proto Source Files ↩︎

See Also

Support

記事をお読みくださりありがとうございます。このウェブサイトの運営を支援していただける方を募集しています。 もしよろしければ、下のボタンからサポート(投げ銭)していただけると、ブログ執筆、情報発信のモチベーションに繋がります✨