PB生成 Grpc Web和Grpc SDK

PB生成 Grpc Web和Grpc SDK

10月 10, 2025 · 1 分钟阅读时长 · 430 字 · -阅读 -评论

最近开发web3js,需要重新玩grpc,整理下牵扯的grpc-web和grpc。

首先pb生成grpc和grpc-web的代码是不同的。因此必须使用不同的插件来生成代码。

PB生成grpc-web

  1. 生成的代码是commonjs格式的。
  2. 生成代码可以是js,同时包含dts定义。
  3. 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

  1. 需要安装grpc_tools_node_protoc_ts包,支持生成TS定义。
  2. 需要安装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客户端代码了。

Alan H
Authors
开发者,数码产品爱好者,喜欢折腾,喜欢分享,喜欢开源