使用protoc 3.21.1从proto生成JS文件报protoc-gen-js未识别错误
问题原因
从protobuf v3.21.x版本开始,JavaScript代码生成能力不再内置在protoc核心发行包中,被拆分为独立的protoc-gen-js插件。执行生成命令时,protoc会在系统环境变量PATH、自身所在目录下检索名为protoc-gen-js(Windows平台对应protoc-gen-js.exe)的可执行程序,检索失败就会抛出你看到的报错:
'protoc-gen-js' is not recognized as an internal or external command,
operable program or batch file.
--js_out: protoc-gen-js: Plugin failed with status code 1.
解决配置步骤
- 第一步:获取
protoc-gen-js可执行文件
Windows平台可直接下载对应版本的预编译protoc-gen-js.exe,也可以通过npm全局安装,执行命令:npm install -g protoc-gen-js
安装完成后npm全局目录下会自动生成对应可执行文件。 - 第二步:配置插件检索路径,两种方式二选一即可
- 把
protoc-gen-js.exe放到和protoc.exe相同的目录下,protoc会自动识别同目录下的插件,无需额外配置环境变量 - 把
protoc-gen-js.exe所在文件夹的路径添加到系统环境变量PATH中,添加完成后重启终端让配置生效
如果选择npm安装方式,需要确认npm全局安装路径已经加入系统PATH,否则依然会出现找不到插件的问题
- 把
- 第三步:验证配置有效性
终端执行protoc-gen-js --version,如果能正常输出版本号说明配置生效,此时执行原生成命令即可正常输出目标JS文件:protoc.exe --js_out=import_style=commonjs,binary:. employees.proto
内容的提问来源于stack exchange,提问作者Parzival
相关产品推荐
相关产品推荐

