在 nodejs 和 typescript 中使用 grpc
use grpc in nodejs and typescript
我需要在 nodejs 类型脚本项目中使用 GRPC,我在 windows 10 和 npm 中生成原型文件时遇到问题。
我想下载这个文件transpile-proto-ts.sh
:
#!/usr/bin/env bash
OUT_DIR="./src"
TS_OUT_DIR="./src"
IN_DIR="./protos"
PROTOC="$(npm bin)/grpc_tools_node_protoc"
PROTOC_GEN_TS_PATH="$(npm bin)/protoc-gen-ts"
PROTOC_GEN_GRPC_PATH="$(npm bin)/grpc_tools_node_protoc_plugin"
$PROTOC \
-I="./" \
--plugin=protoc-gen-ts=$PROTOC_GEN_TS_PATH \
--plugin=protoc-gen-grpc=${PROTOC_GEN_GRPC_PATH} \
--js_out=import_style=commonjs:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR \
--ts_out=grpc_js:$TS_OUT_DIR \
"$IN_DIR"/*.proto
但是当我 运行 这个命令在 git bash
中时:bash transpile-proto-ts.sh
它告诉我这个错误:
>--ts_out: protoc-gen-ts: %1 is not a valid Win32 application.
C:\Projects\GRPC\node_modules\grpc-tools\bin\protoc.js:41
throw error;
^
Error: Command failed: C:\Projects\GRPC\node_modules\grpc-tools\bin\protoc.exe --plugin=protoc-gen-grpc=C:\Projects\GRPC\node_modules\grpc-tools\bin\grpc_node_plugin.exe --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts --js_out=import_style=commonjs,binary:./protos --ts_out=./protos --grpc_out=./protos -I ./protos ./protos/example.proto
--ts_out: protoc-gen-ts: %1 is not a valid Win32 application.
at ChildProcess.exithandler (node:child_process:397:12)
at ChildProcess.emit (node:events:390:28)
at maybeClose (node:internal/child_process:1064:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5) {
killed: false,
code: 1,
signal: null,
cmd: 'C:\Projects\GRPC\node_modules\grpc-tools\bin\protoc.exe --plugin=protoc-gen-grpc=C:\Projects\GRPC\node_modules\grpc-tools\bin\grpc_node_plugin.exe --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts --js_out=import_style=commonjs,binary:./protos --ts_out=./protos --grpc_out=./protos -I ./protos ./protos/example.proto'
}
确保您的 sh 文件可执行为
chmod 777 transpile-proto-ts.sh
我遇到了类似的问题,我使用的是 YARN 而不是 NPM。
我需要在 nodejs 类型脚本项目中使用 GRPC,我在 windows 10 和 npm 中生成原型文件时遇到问题。
我想下载这个文件transpile-proto-ts.sh
:
#!/usr/bin/env bash
OUT_DIR="./src"
TS_OUT_DIR="./src"
IN_DIR="./protos"
PROTOC="$(npm bin)/grpc_tools_node_protoc"
PROTOC_GEN_TS_PATH="$(npm bin)/protoc-gen-ts"
PROTOC_GEN_GRPC_PATH="$(npm bin)/grpc_tools_node_protoc_plugin"
$PROTOC \
-I="./" \
--plugin=protoc-gen-ts=$PROTOC_GEN_TS_PATH \
--plugin=protoc-gen-grpc=${PROTOC_GEN_GRPC_PATH} \
--js_out=import_style=commonjs:$OUT_DIR \
--grpc_out=grpc_js:$OUT_DIR \
--ts_out=grpc_js:$TS_OUT_DIR \
"$IN_DIR"/*.proto
但是当我 运行 这个命令在 git bash
中时:bash transpile-proto-ts.sh
它告诉我这个错误:
>--ts_out: protoc-gen-ts: %1 is not a valid Win32 application.
C:\Projects\GRPC\node_modules\grpc-tools\bin\protoc.js:41
throw error;
^
Error: Command failed: C:\Projects\GRPC\node_modules\grpc-tools\bin\protoc.exe --plugin=protoc-gen-grpc=C:\Projects\GRPC\node_modules\grpc-tools\bin\grpc_node_plugin.exe --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts --js_out=import_style=commonjs,binary:./protos --ts_out=./protos --grpc_out=./protos -I ./protos ./protos/example.proto
--ts_out: protoc-gen-ts: %1 is not a valid Win32 application.
at ChildProcess.exithandler (node:child_process:397:12)
at ChildProcess.emit (node:events:390:28)
at maybeClose (node:internal/child_process:1064:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5) {
killed: false,
code: 1,
signal: null,
cmd: 'C:\Projects\GRPC\node_modules\grpc-tools\bin\protoc.exe --plugin=protoc-gen-grpc=C:\Projects\GRPC\node_modules\grpc-tools\bin\grpc_node_plugin.exe --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts --js_out=import_style=commonjs,binary:./protos --ts_out=./protos --grpc_out=./protos -I ./protos ./protos/example.proto'
}
确保您的 sh 文件可执行为
chmod 777 transpile-proto-ts.sh
我遇到了类似的问题,我使用的是 YARN 而不是 NPM。