使用sudo npm安装Angular CLI时遇gyp EACCES权限错误的解决方法
解决全局安装Angular CLI时的EACCES权限错误
你遇到的是npm全局安装里的经典权限冲突问题——哪怕用了sudo,node-sass的临时编译目录还是出现了权限锁死的情况。这一般是之前的安装残留了权限异常的文件,或者npm全局目录的所有权配置不合理导致的。下面给你几个可行的解决办法:
方案1:修复npm全局目录的权限(推荐长期解决)
这个方法能从根源上避免以后装全局包再碰权限问题:
- 先查看npm的全局安装前缀目录:
npm config get prefix - 把这个目录的所有权改为当前用户(这样你以后装全局包就不用每次加
sudo了):sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} - 之后直接重新安装Angular CLI,无需
sudo:npm install -g @angular/cli
方案2:清理残留文件并强制安装
如果只是本次安装的临时故障,可以先清理损坏的残留:
- 先卸载不完整的Angular CLI安装:
sudo npm uninstall -g @angular/cli - 清空npm缓存:
npm cache clean --force - 手动删除报错里提到的权限异常目录:
sudo rm -rf /usr/lib/node_modules/@angular/cli/node_modules/node-sass/.node-gyp - 最后用
--unsafe-perm参数重新安装(这个参数能让root用户下的安装跳过部分权限检查):sudo npm install -g @angular/cli --unsafe-perm=true --allow-root
方案3:用nvm管理Node版本(彻底规避权限问题)
如果经常遇到这类权限问题,推荐用nvm(Node版本管理器)来管理Node和npm,它会把所有相关文件放在用户目录下,完全绕开系统级权限:
- 安装nvm(运行官方安装脚本即可,无需sudo):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - 重启终端后,安装你需要的Node版本(这里是8.9.4):
nvm install 8.9.4 - 然后直接安装Angular CLI,全程不需要sudo:
npm install -g @angular/cli
注意事项
- 尽量避免用
sudo安装npm全局包,很容易导致系统目录的权限混乱; - 如果必须用root用户操作,确保
NODE_PATH等环境变量配置正确。
内容的提问来源于stack exchange,提问作者Bhargav




