NodeJS:协议生成的文件不生成服务定义

NodeJS: protoc generated files not generating service definition

下面有一个相对简单的 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 函数。环顾了其他一些 post 和 Google 的参考资料 (https://developers.google.com/protocol-buffers/docs/reference/overview),似乎我需要包含一个 --plugin 选项,但我似乎找不到任何。有人对此有解决方案吗?

Node gRPC 的 protoc 插件分布在 grpc-tools npm package 中。该软件包提供了一个工具 grpc_tools_node_protoc,它是自动包含插件的 protoc 版本。

如该包的 README 中所述,当您 运行 该工具时,您还需要使用 --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