报错现场
$ protoc --js_out=./js_protobuf ./protobuf/
protoc-gen-js: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--js_out: protoc-gen-js: Plugin failed with status code 1.
分析
网上查找了关于这方面的信息,最终找到了这个:
接下来是要知道怎么通过编译上边提到的库,来解决最开始的问题。
编译protobu-javascript源代码
$ git clone https://github.com/protocolbuffers/protobuf-javascript
$ cd protobuf-javascript/
# 这里可能要多运行几次,我前面运行了几次都是超时后结束了。
$ bazel build //generator:protoc-gen-js
构建好了之后,protoc-gen-js的可执行文件位于bazel-bin/generator/。
$ ls bazel-bin/generator/protoc-gen-js
bazel-bin/generator/protoc-gen-js
使用
接下来当我们需要使用 protoc 命令来生成 JavaScript 代码时,只需要在命令后面带上 --plugin={编译的目录}/bazel-bin/generator/protoc-gen-js 选项即可。
例如这样:
/usr/local/protobuf-javascript/是编译protobuf-javascript的目录。
$ protoc --plugin=/usr/local/protobuf-javascript/bazel-bin/generator/protoc-gen-js --js_out=./protobuf ./xx.proto
(-: 成功生成 JavaScript 代码。