grpc-toolsを使って.protoファイルからNode.jsのgRPC clientコードを生成する
環境
$ node -v
v10.15.3
前提
$ npm i -g grpc-tools
※ grpc-toolsには protoc
本体も含まれている
前提として次の hero.proto
がheroディレクトリ以下にある状態でこの後の手順を解説する。
これは、nestjsの sample/04-grpc から拝借した。
syntax = "proto3";
package hero;
service HeroService {
rpc FindOne (HeroById) returns (Hero) {}
}
message HeroById {
int32 id = 1;
}
message Hero {
int32 id = 1;
string name = 2;
}
生成する
次のコマンドを実行して生成する。
オプションが複数になるのと、環境に依存するpathを使用する箇所があるので、シェルスクリプト化しても良さそう。
grpc_tools_node_protoc \
--js_out=import_style=commonjs,binary:. \
--grpc_out=. \
--plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` \
hero/hero.proto
- --js_out
- protobufのmessageクラス定義の出力先ディレクトリを指定
- --grpc_out
- client実装の出力先ディレクトリを指定
- --plugin
- 利用するプラグインのパスを指定
生成されるファイルの確認
-
hero_pb.js
- protobufのmessageオブジェクトををjavascriptのclassで表現したもの
-
hero_grpc_pb.js
- clientの実装
- 内部的にhero_pb.jsが読み込まれているため利用する場合はhero_pb.jsも必要になる
生成されたファイルの内容をここに貼り付けることはしないが、hero_grpc_pb.jsの内容を確認すると、.protoに定義した通りのスキーマで呼び出しコードが生成されているのがわかる。
参考
Author And Source
この問題について(grpc-toolsを使って.protoファイルからNode.jsのgRPC clientコードを生成する), 我々は、より多くの情報をここで見つけました https://qiita.com/daikiojm/items/3944f529dcb7a43ec90d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .