目的:
为了使用typescript语法调用gRPC.
过程
各种找,也试过用thrift输出typescript代码,各种错误依赖都错.
然后尝试用使用gRPC.然后我找到一个名字叫ts-protoc-gen的包,感觉找到了救星
https://github.com/agreatfool/grpc_tools_node_protoc_ts3.官网那个配置是机遇linux操作的在windows10下跑不了,有以下这几种错误
官网命令(自己跑不起来)
script 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16npm 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自己修改后的命令(需要你自己修改plugin路径)
1
2
3protoc --grpc_out=./ --js_out=import_style=commonjs,binary:./ --plugin=protoc-gen-grpc=D:/comany_project/monster_farm/server/node_modules/.bin/grpc_tools_node_protoc_plugin.cmd index.proto
protoc --grpc_out=./ --plugin=protoc-gen-grpc=D:/comany_project/monster_farm/server/node_modules/.bin/grpc_tools_node_protoc_ts_plugin.cmd index.proto
两条命令使用的插件名不同grpc_tools_node_protoc_ts_plugin.cmd 中间有个ts
- 坑
- window下 protoc-gen-ts后面要加个cmd, 且–plugin对应的参数要用绝对路径,如果不用绝对路径,则需要使用window特定的相对路径书写方式,例如 .\**\这样.
- 环境依赖
package.json文件内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27{
"name": "ts",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
},"dependencies": {
"google-protobuf": "^3.0.0",
"grpc": "^1.11.0"
},
"devDependencies": {
"@types/node": "^11.11.4",
"grpc-tools": "latest",
"grpc-tools-ts": "latest",
"grpc_tools_node_protoc_ts": "^2.4.2",
"mocha": "latest",
"ts-node": "^8.0.3",
"ts-protoc-gen": "^0.9.0",
"typescript": "^3.3.4000",
"typings": "latest"
}
}
protoc版本
protoc-3.7.0-win64