Protoc does not export the TS file version of *_grpc_pb.js?

Viewed 296

I am new to setting up the gRPC web based client side. Our backend is already up and running on Go with gRPC. I am testing out what it's like converting the .proto file into TS. I am successfully able to generate some of the files, however, I am missing the TypeScript "Service" file.

I pretty much followed the instructions from the grpc_tools_node_protoc_ts site.

Setup a script to generate files for 1) the service and 2) the client model:

PROTOC_GEN_TS_PATH="./node_modules/.bin/protoc-gen-ts"
GRPC_TOOLS_NODE_PROTOC_PLUGIN="./node_modules/.bin/grpc_tools_node_protoc_plugin"
GRPC_TOOLS_NODE_PROTOC="./node_modules/.bin/grpc_tools_node_protoc"
OUT_DIR="./_protos_/proto/"

# JavaScript code generating
${GRPC_TOOLS_NODE_PROTOC} \
    --plugin=protoc-gen-grpc="${GRPC_TOOLS_NODE_PROTOC_PLUGIN}" \
    --js_out=import_style=commonjs,binary:"${OUT_DIR}" \
    --grpc_out="${OUT_DIR}" \
    -I "${OUT_DIR}" \
    "${OUT_DIR}"/*.proto

${GRPC_TOOLS_NODE_PROTOC} \
    --plugin=protoc-gen-ts="${PROTOC_GEN_TS_PATH}" \
    --ts_out="${OUT_DIR}" \
    -I "${OUT_DIR}" \
    "${OUT_DIR}"/*.proto

What I get on the output is missing the *_grpc_pb.d.ts. I am under the impression I need this? ‍♂️

I have also tried adding the service option to the flag: --ts_out="service=grpc-web:${OUT_DIR}" \

This now generates a *_pb_service.d.ts output file, still without the *_grpc_pb.d.ts file. I was reading the docs more and am thinking this service=grpc-web is actually the option I need since we're not running a node server.

Does this seem right? This is what I have now:

# Note the ts_out flag "service=grpc-node":  
# This does  generate the *_grpc_pb.d.ts but not the service files
protoc \
    --plugin="protoc-gen-ts=${PROTOC_GEN_TS_PATH}" \
    --plugin=protoc-gen-grpc=${GRPC_TOOLS_NODE_PROTOC_PLUGIN} \
    --js_out="import_style=commonjs,binary:${OUT_DIR}" \
    --ts_out="service=grpc-node:${OUT_DIR}" \
    --grpc_out="${OUT_DIR}" \
    -I "${OUT_DIR}" \
    "${OUT_DIR}"/*.proto

# Note the ts_out flag "service=grpc-web":  
# This does generate the service files, but not the *_grpc_pb.d.ts file
protoc \
    --plugin="protoc-gen-ts=${PROTOC_GEN_TS_PATH}" \
    --plugin=protoc-gen-grpc=${GRPC_TOOLS_NODE_PROTOC_PLUGIN} \
    --js_out="import_style=commonjs,binary:${OUT_DIR}" \
    --ts_out="service=grpc-web:${OUT_DIR}" \
    --grpc_out="${OUT_DIR}" \
    -I "${OUT_DIR}" \
    "${OUT_DIR}"/*.proto

enter image description here

0 Answers
Related