下面有一个相对简单的helloworld.proto
文件
syntax = "proto3";
package helloworld;
service Greeter { rpc SayHello(HelloRequest) returns (HelloResponse); }
message HelloRequest { string name = 1; }
message HelloResponse { string message = 1; }
当我运行protoc --js_out=import_style=commonjs,binary:. .helloworld.proto
时,它会生成一个helloworld_pb.js
文件,但它不包括我的Greeter
服务或我的SayHello
rpc 函数。查看了其他一些帖子以及Google的参考(https://developers.google.com/protocol-buffers/docs/reference/overview(,似乎我需要包含一个--plugin
选项,但我似乎找不到任何选项。有人对此有解决方案吗?
Node gRPC 的protoc
插件分布在grpc-tools
npm 包中。该包提供了一个工具grpc_tools_node_protoc
,该工具是自动包含插件的protoc
版本。
如该包的自述文件中所述,当您运行该工具时,您还需要使用--grpc_out
参数来控制插件。该问题标记为grpc-js
,因此您可能希望使用该参数的grpc_js
选项来生成与grpc-js
交互的代码。
对于那些一直在寻找同时生成打字稿的示例的人,请参见下文
grpc_tools_node_protoc.cmd --js_out=import_style=commonjs,binary:.output --grpc_out=generate_package_definition:.output *.proto
grpc_tools_node_protoc.cmd --plugin=protoc-gen-ts.cmd=./node_modules/.bin/protoc-gen-ts --ts_out=.typescript -I .output *.proto