升级protobufjs至7.1.2后出现pbjs: command not found错误求助
解决protobufjs 7.x升级后
pbjs: command not found的问题 核心原因
protobufjs 7.x版本对CLI工具(pbjs/pbts)的分发方式做了调整,不再像6.x那样默认将可执行文件纳入全局调用路径,本地安装时也无法直接通过终端命令直接触发。
具体解决步骤
1. 本地安装时通过npm脚本调用
如果是项目本地安装的protobufjs,直接在终端执行pbjs会因不在系统PATH中而报错。可以在项目package.json中添加自定义脚本:
{ "scripts": { "pbjs": "pbjs", "pbts": "pbts" } }
之后通过npm run pbjs代替直接执行pbjs,参数需要放在--之后传递,示例:
npm run pbjs -- -t static-module -w es6 -o src/proto/index.js src/proto/*.proto
2. 全局安装独立CLI包
protobufjs 7.x将CLI工具拆分为单独的@protobufjs/cli包,若需要全局直接调用,需单独安装该包:
npm install -g @protobufjs/cli
安装完成后,终端直接执行pbjs即可正常使用。
3. 直接调用本地可执行文件
不想修改package.json或全局安装的话,可以直接调用项目node_modules内的可执行文件:
./node_modules/.bin/pbjs [你的编译参数]
也可以用npx临时调用:
npx pbjs [你的编译参数]
4. 验证修复效果
执行以下命令确认CLI工具可正常调用:
pbjs --version
内容的提问来源于stack exchange,提问作者N.SH
相关产品推荐
相关产品推荐

