npm 全局安装报 EACCES 时,先把 npm 全局目录改到当前用户目录,再补 PATH,别急着用 sudo。
有时装一个全局命令,刚跑 npm install -g,终端就回一串 EACCES 或 permission denied。不少人第一反应是前面加 sudo,但这样容易把全局包和缓存目录搞成 root 权限,后面更乱。
先用当前用户目录接住 npm 的全局安装。可以按 npm 官方文档给的做法,先执行:
mkdir ~/.local npm config set prefix ~/.local 然后把这个目录加到 PATH。当前 shell 先临时执行一次:
export PATH="$HOME/.local/bin:$PATH" 想长期生效,就把同一行加到你常用 shell 的配置文件里,比如 ~/.zshrc 或 ~/.bashrc,保存后重新打开终端,或者执行一次:
source ~/.zshrc 这时再重试原来的全局安装命令,一般就能过去。如果你只是偶尔跑一次命令,不一定非要全局装。npm 文档也提到,可以直接试试 npx your-package-name。
另外,npm 官方把 Node 版本管理器列为更推荐的长期方案,因为它会把 Node 和 npm 放在当前用户可写的位置,后面少踩很多权限坑。参考:Resolving EACCES permissions errors when installing packages globally。
最后提醒两点:第一,别把 sudo npm install -g 当默认解法;第二,如果你之前已经用过 sudo 装全局包,后面仍报权限问题,还要顺手检查 npm 缓存和旧目录属主是不是已经被改乱了。




留言评论
暂无留言