You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

执行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安装在用户专属目录下,完全避开系统权限限制:

    1. 先卸载当前的Node(直接删除系统里的Node文件,或者用官方卸载脚本)
    2. 安装nvm(终端里直接跑安装命令就行,不用加sudo)
    3. 用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

火山引擎 最新活动