Mac环境下全局安装Jest遇gyp权限错误及已尝试的解决方法
解决MacBook全局安装Jest时的
gyp ERR! EACCES: permission denied, rmdir 'build'错误 这个gyp ERR! EACCES权限报错在Mac上全局装npm包时真的很常见,尤其是涉及到node-gyp编译步骤的时候——毕竟系统目录的权限管得严。既然你试过更新node-gyp和修改目录权限都没搞定,我给你几个更靠谱的解决思路:
方案1:用nvm管理Node.js版本(长期推荐)
nvm会把Node.js安装在你的用户目录下,完全绕开系统级的权限限制,不仅能解决这次的问题,还能帮你轻松切换不同Node版本,后续开发更省心:
- 先通过Homebrew安装nvm:
brew install nvm,安装完成后按照终端提示把nvm的配置加到你的shell文件(比如~/.zshrc或~/.bash_profile)里 - 重启终端,或者执行
source ~/.zshrc(对应你的shell配置文件)让配置生效 - 安装一个长期支持版的Node.js:
nvm install --lts - 现在直接全局安装Jest,不用加sudo:
npm install -g jest
方案2:自定义npm全局安装目录
把npm的全局包安装目录改成你的用户目录,这样就不用碰系统目录的权限了:
- 在用户根目录创建一个全局包目录:
mkdir ~/.npm-global - 告诉npm使用这个新目录:
npm config set prefix '~/.npm-global' - 把这个目录添加到系统PATH中,编辑你的shell配置文件(比如
~/.zshrc),添加一行:export PATH=~/.npm-global/bin:$PATH - 刷新配置让它生效:
source ~/.zshrc - 现在直接安装Jest:
npm install -g jest
方案3:临时用--unsafe-perm参数解决
如果暂时不想调整Node环境,试试在安装命令里加上--unsafe-perm参数,它会让npm以root身份运行node-gyp的编译脚本,大概率能解决删除build目录的权限问题:
sudo npm install -g jest --unsafe-perm
优先推荐方案1,毕竟从根源上解决了权限问题,还能带来版本管理的额外好处;方案2适合不想换Node管理工具的情况;方案3则是临时应急的快速解法。
内容的提问来源于stack exchange,提问作者Atul Kumar Verma
相关产品推荐
相关产品推荐

