执行npm install时出现EACCES权限拒绝错误,求解决方案
解决npm EACCES权限拒绝问题的实操方案
兄弟,我之前也踩过这个一模一样的坑,折腾了好一阵才搞定,给你几个亲测有效的办法,按顺序试试:
先检查并修复npm缓存目录的权限
错误提示里的路径明显是权限归属出了问题,先看看这个目录的所有者是谁:ls -ld /Users/marknorgate/.npm/_cacache如果输出里的所有者不是你当前登录的用户(比如显示是root),就递归修改整个npm目录的归属:
sudo chown -R $USER:$USER /Users/marknorgate/.npm$USER会自动替换成你的用户名,这样整个.npm目录就完全归你所有,不会再出现权限拒绝的情况。强制清空npm缓存
有时候缓存文件损坏也会触发这类权限报错,先彻底清掉缓存再重新尝试:npm cache clean --force清完缓存后重新执行
npm install,大概率能解决问题。用nvm管理Node版本(根治方案)
如果你反复重装Node都没用,大概率是系统级权限的锅。用nvm可以把Node/npm安装在用户专属目录下,完全避开系统权限限制:- 先卸载当前的Node(直接删除系统里的Node文件,或者用官方卸载脚本)
- 安装nvm(终端里直接跑安装命令就行,不用加sudo)
- 用nvm安装一个稳定版Node,比如:
nvm install 18
这样安装的Node和npm都是属于你的用户,以后再也不会碰到权限相关的麻烦。
临时应急方案(不推荐常用)
要是上面的办法都不行,实在赶时间可以试试用sudo,但这个操作会把依赖包装成root权限,后续可能引发其他权限问题:sudo npm install --unsafe-perm加上
--unsafe-perm是为了避免安装过程中权限切换失败的问题。
另外,你之前迁移缓存路径的时候,有没有检查新路径的权限?比如你把缓存迁到了新目录,但那个目录的所有者是root?可以用npm config get cache查看当前缓存路径,再用chown修改归属就行。
内容的提问来源于stack exchange,提问作者serlingpa




