【问题标题】:How to generate the _grpc_pb.d.ts from a proto file for use with gRPC in a Node app?如何从 proto 文件生成 _grpc_pb.d.ts 以在 Node 应用程序中与 gRPC 一起使用?
【发布时间】:2018-07-24 18:52:46
【问题描述】:

这是我的npm run protoc,下面的行会运行:

./node_modules/protoc/protoc/bin/protoc --proto_path=proto --js_out=import_style=commonjs,binary:src/bin --grpc_out=src/bin --plugin=protoc-gen-grpc=node_modules/grpc-tools/bin/grpc_node_plugin --ts_out=service=true:src/bin proto/authentication_service.proto

它会生成以下文件:

authentication_service_grpc_pb.js
authentication_service_pb.d.ts
authentication_service_pb.js
authentication_service_pb_service.d.ts
authentication_service_pb_service.js

有一次我能够让它生成一个authentication_service_grpc_pb.d.ts,但是我在上面保存的配置却没有。任何人都可以帮助我缺少什么吗?谢谢!

【问题讨论】:

  • “曾经”和现在之间发生了什么变化?看起来该命令获取了为 js 和 ts 生成文件的参数就好了。你能用输出验证 ts generation 是否正常工作吗?
  • @zamber 老实说,问题是我可能没有提交正确版本的命令。第一次让它生成 authentication_service_grpc_pb.d.ts 花了我一段时间。在过去的两天里,我一直在浏览应该为 authentication_service_grpc_pb.js 生成 TS 文件但没有成功的插件。没有其他任何改变,我保持一切平等,因为目标是为新原型生成一个新集合,并使用现有的进行测试。

标签: node.js typescript grpc


【解决方案1】:

查看文档的 "How to use" 部分并注意生成 d.ts 代码是使用不同的可执行文件完成的:

npm install grpc_tools_node_protoc_ts --save-dev

# generate js codes via grpc-tools
grpc_tools_node_protoc \
--js_out=import_style=commonjs,binary:./your_dest_dir \
--grpc_out=./your_dest_dir \
--plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` \
-I ./proto \
./your_proto_dir/*.proto

# generate d.ts codes
protoc \
--plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts \
--ts_out=./your_dest_dir \
-I ./proto \
./your_proto_dir/*.proto

写完之后,这甚至不是问题的根源(至少对于这个特定的生成器而言)。 bin/ 中的可执行文件是protoc-gen-ts

当您尝试不同的东西时,请确保对您的尝试进行版本控制并清理输出目录以获得可重现的环境。

鉴于所有这些,我最好的猜测是 --ts-out--js-out 标志相互抵消,您必须为每种输出类型运行一次生成器。通过尝试验证。作为奖励,您可以尝试找出是否有 --verbose 标志让您的生活更轻松:)。

【讨论】:

  • 感谢您的帮助。原来我错过了 --grpc-ts_out=src/bin。以上对我也不起作用,它会在处理过程中卡住。以下内容适用于我需要的一切,这次我确保保存它:./node_modules/protoc/protoc/bin/protoc --proto_path=proto --js_out=import_style=commonjs,binary:src/bin --grpc_out=src/bin --grpc-ts_out=src/bin --plugin=protoc-gen-grpc=node_modules/grpc-tools/bin/grpc_node_plugin --ts_out=src/bin proto/authentication_service.proto
猜你喜欢
  • 2020-03-05
  • 2019-05-12
  • 2020-04-09
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
相关资源
最近更新 更多