PB生成 Grpc Web和Grpc SDK
PB生成 Grpc Web和Grpc SDK
最近开发web3js,需要重新玩grpc,整理下牵扯的grpc-web和grpc。
首先pb生成grpc和grpc-web的代码是不同的。因此必须使用不同的插件来生成代码。
PB生成grpc-web
- 生成的代码是commonjs格式的。
- 生成代码可以是js,同时包含dts定义。
- mode根据需要设定,其实两种模式都可以选择,只是说跟后端比如代理网关有关。
protoc --proto_path="$PROTO_PATH" \
--js_out=import_style=commonjs,binary:"$OUTPUT_DIR" \
--grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:"$OUTPUT_DIR" \
"$relative_dir/$proto_filename" \
-I "$PROTO_PATH"
PB生成grpc
- 需要安装grpc_tools_node_protoc_ts包,支持生成TS定义。
- 需要安装grpc-tools,其中工具是grpc_tools_node_protoc。
# 使用 grpc_tools_node_protoc 一次性生成 JS + TS
grpc_tools_node_protoc \
--plugin=protoc-gen-ts=../../node_modules/.bin/protoc-gen-ts \
-I="$PROTO_PATH" \
--js_out=${IMPORT_STYLE}${OUTPUT_DIR} \
--grpc_out=grpc_js:${OUTPUT_DIR} \
--ts_out=grpc_js:${OUTPUT_DIR} \
"$grpc_proto"
PB文件中依赖的第三方包
比如import "google/api/http.proto",需要下载google的proto文件,放到指定目录下,避免生成时报错找不到对应包。
写在最后
综上就生成对应WEB JS和NodeJS的grpc客户端代码了。

