Mac系统npm全局安装sass报EACCES权限错误如何解决
问题根因
这个报错是典型的Mac环境下npm全局安装目录权限配置错误:你当前登录的用户账号没有/usr/local/lib/node_modules目录的写入权限,所以不管是全局安装sass,还是升级npm本身,只要涉及往这个系统级目录写入文件都会抛出EACCES权限拒绝错误。你之前尝试nvm方案没生效,基本是nvm安装后没有正确配置终端环境变量,终端实际调用的还是之前装在系统路径下的npm,自然绕不开权限问题。
解决方法
按推荐优先级从高到低选一种操作即可,第一种是长期来看最省心的方案,适合新手。
方案1:通过nvm管理Node.js(一劳永逸避免权限问题)
nvm会把所有Node版本和全局包装在你自己的用户目录下,完全不需要管理员权限,从根源上杜绝这类权限报错,操作步骤如下:
- 先清理之前手动安装的全局Node.js和npm残留,终端依次执行以下命令:
sudo rm -rf /usr/local/lib/node_modules sudo rm /usr/local/bin/node sudo rm /usr/local/bin/npm sudo rm -rf ~/.npm
- 安装nvm,安装完成后把nvm要求的环境变量配置写入你当前终端对应的配置文件:如果是Mac默认的zsh终端,就写入
~/.zshrc;如果是旧版bash终端,就写入~/.bash_profile,需要写入的配置内容如下:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
- 执行
source ~/.zshrc(zsh终端)或source ~/.bash_profile(bash终端)让配置立即生效,接着执行nvm install --lts安装Node.js长期支持版本。 - 安装完成后直接执行
npm install -g sass即可正常安装,过程中出现的--global参数废弃警告不影响实际使用,新手可以暂时忽略。
方案2:修复现有npm目录权限(无需重装Node)
如果不想折腾重装Node环境,直接把npm相关目录的所有权分配给当前登录用户即可,终端执行以下命令:
sudo chown -R $USER /usr/local/lib/node_modules sudo chown -R $USER ~/.npm
执行命令时会要求输入Mac开机密码,输入过程中终端不会显示字符是正常机制,输完直接按回车即可。命令执行完成后再运行npm install -g sass就能正常安装。
注意:不要图省事直接用
sudo npm install -g 包名的方式绕过权限,这种方式安装的包所有权属于root用户,后续使用过程中会衍生更多难以排查的权限问题,不推荐新手使用。
验证安装
安装完成后在终端执行sass --version,如果能正常输出对应的版本号,就说明安装成功可以正常使用了。
内容的提问来源于stack exchange,提问作者Carlos Prieto
相关产品推荐
相关产品推荐

