安装firebase-tools报错:protobufjs@6.11.2 postinstall脚本执行失败
firebase-tools安装protobufjs报错解决方案
问题根因
该报错由protobufjs@6.11.2的postinstall安装后脚本执行失败触发,Linux环境下出现该问题90%以上是全局安装npm包的权限问题:使用root身份执行npm安装命令时,npm默认会降权到nobody用户执行第三方包的脚本,nobody用户没有对应目录的读写权限,就会导致脚本执行失败。
可用解决方案
- 方案1(最便捷):安装时添加
--unsafe-perm参数,跳过npm的权限降权逻辑,直接用当前用户身份执行脚本
执行命令:npm install -g --unsafe-perm firebase-tools - 方案2(推荐,无安全隐患):调整npm全局包的安装路径到当前普通用户的可读写目录,从根源避免权限问题
- 创建自定义的全局包安装目录:
mkdir -p ~/.npm-global- 配置npm使用该目录作为全局安装路径:
npm config set prefix '~/.npm-global'- 将全局包的执行文件路径添加到系统环境变量:打开
~/.bashrc(如果用zsh则修改~/.zshrc),在文件末尾添加如下内容:
export PATH=~/.npm-global/bin:$PATH- 重载环境变量使其生效:
source ~/.bashrc- 重新执行安装命令即可:
npm install -g firebase-tools - 方案3(临时应急用):如果上述方案都不生效,可临时跳过所有脚本执行完成安装
执行命令:
注意:该方案为临时绕过方案,少部分功能可能受影响,仅建议应急时使用npm install -g --ignore-scripts firebase-tools - 补充方案:如果是npm版本兼容问题,可先升级npm到8.x版本后再尝试安装
执行命令:npm install -g npm@8
内容的提问来源于stack exchange,提问作者Dicky Arisandi
相关产品推荐
相关产品推荐

