使用protoc编译proto时报错protoc-gen-js程序不存在或不可执行
问题说明
执行proto编译命令时触发protoc-gen-js: program not found or is not executable报错,核心原因是Protobuf 3.14+版本已将JS代码生成插件从核心protoc发行包中拆分,不会随protoc默认安装,需要单独部署。
protoc-gen-js获取方式
你可以根据自己的开发场景选以下任意一种安装方式:
- 前端场景推荐:通过npm全局安装
这是最适配React项目的方案,安装后不需要手动配置环境变量,直接执行命令:
安装完成后执行npm install -g protoc-gen-jsprotoc-gen-js --version验证,能正常输出版本号就说明部署成功,重新运行原编译命令即可正常生成JS代码。 - 系统包管理器安装
- macOS(Homebrew环境):执行
brew install protoc-gen-js即可 - Debian/Ubuntu系Linux:先更新软件源,再执行
sudo apt install protobuf-compiler-js安装
- macOS(Homebrew环境):执行
- 手动编译安装
protoc-gen-js的源码维护在grpc-web项目的第三方依赖目录中,拉取grpc-web源码后,进入third_party/protobuf/src/google/protobuf/compiler/js路径即可找到完整源码,本地编译完成后将生成的protoc-gen-js二进制文件放到系统PATH包含的目录下(比如/usr/local/bin)即可使用。
补充提示:如果你使用的是1.2.0以上版本的grpc-web,也可以直接搭配
ts-proto等现代Protobuf JS生态工具生成ES Module格式的代码,不需要依赖旧版commonjs规范的protoc-gen-js,更适配Vite、Create React App等现代React构建工具链。
内容的提问来源于stack exchange,提问作者Asma Rahim Ali Jafri
相关产品推荐
相关产品推荐

