如何解决npm全局安装pnpm时出现的EACCES权限拒绝错误
报错原因
这是Linux/macOS类系统下npm全局安装工具的权限不足问题,本质是当前普通用户没有系统级目录/usr/bin的写入权限,npm全局安装pnpm时需要在该目录下创建软链接指向pnpm的执行文件,权限校验不通过就会触发EACCES报错。
完整报错翻译
npm ERR! 错误码 EACCES
npm ERR! 系统调用 symlink(创建软链接)
npm ERR! 原路径 ../lib/node_modules/pnpm/bin/pnpm.cjs
npm ERR! 目标路径 /usr/bin/pnpm
npm ERR! 错误编号 -13
npm ERR! 错误:EACCES: 权限不足,无法创建软链接 '../lib/node_modules/pnpm/bin/pnpm.cjs' -> '/usr/bin/pnpm'
npm ERR! 该操作被你的操作系统拒绝,大概率是当前用户没有对应文件的访问权限
npm ERR! 如果你确认是权限问题,请检查目标文件及所属目录的权限,或使用root/管理员身份重新运行命令
解决方案
方案1:临时提权安装(适合快速解决单次安装需求)
直接在原命令前加sudo提权执行即可:
sudo npm install -g pnpm
执行后输入当前用户的管理员密码即可完成安装。
注意:不建议长期使用sudo执行npm全局安装命令,可能会带来后续的文件权限冲突问题
方案2:修改npm全局安装路径(长期安全方案,无需反复提权)
- 第一步:创建当前用户专属的npm全局包存储目录
mkdir -p ~/.npm-global - 第二步:配置npm使用该目录作为全局安装路径
npm config set prefix '~/.npm-global' - 第三步:将全局包的执行文件路径添加到系统环境变量
如果你使用bash终端:echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
如果你使用zsh终端:echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc - 第四步:刷新终端环境变量配置
对应bash终端执行:source ~/.bashrc
对应zsh终端执行:source ~/.zshrc - 第五步:重新执行pnpm全局安装命令即可,无需加sudo
npm install -g pnpm
内容的提问来源于stack exchange,提问作者Afzal Ansari
相关产品推荐
相关产品推荐

