这是我的npm run protoc
,下面的行将运行:
./node_modules/protoc/protoc/bin/protoc --proto_path=proto --js_out=import_style=commonjs,binary:src/bin --grpc_out=src/bin --plugin=protoc-gen-grpc=node_modules/grpc-tools/bin/grpc_node_plugin --ts_out=service=true:src/bin proto/authentication_service.proto
它会生成以下文件:
authentication_service_grpc_pb.js
authentication_service_pb.d.ts
authentication_service_pb.js
authentication_service_pb_service.d.ts
authentication_service_pb_service.js
一次,我能够使它生成一个 authentication_service_grpc_pb.d.ts ,但是使用上面保存的配置却无法生成。有人可以帮我解决我所缺少的吗?谢谢!
答案 0 :(得分:2)
看看文档的"How to use"部分,请注意,生成d.ts代码是使用其他可执行文件完成的:
npm 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
写完这个之后,这甚至不是问题的根源(至少对于这个特定的生成器而言)。 bin/
中的可执行文件是protoc-gen-ts
。
当您尝试其他内容时,请确保对尝试进行版本控制并清理输出目录以提供可重现的环境。
鉴于所有这些,我最好的猜测是--ts-out
和--js-out
标志彼此抵消,因此您必须为每种输出类型运行一次生成器。通过尝试进行验证。另外,您可以尝试找出是否有--verbose
标志来简化您的生活:)。