npm EACCES 权限错误修复与 pnpm 安装

📅 2026/7/13 4:48:02
npm EACCES 权限错误修复与 pnpm 安装
npm EACCES 权限错误修复与 pnpm 安装问题背景在使用npm install -g全局安装包如 pnpm时可能会遇到以下权限错误Error: EACCES: permission denied, mkdir /usr/lib/node_modules/pnpm npm error at async mkdir (node:internal/fs/promises:858:10) npm error errno: -13, npm error code: EACCES, npm error syscall: mkdir, npm error path: /usr/lib/node_modules/pnpm原因分析npm 全局安装目录默认指向/usr普通用户没有写入权限。通常发生在首次配置 npm 时未正确设置全局目录使用 apt 等系统包管理器安装的 Node.jsnpm 默认 prefix 为/usr之前使用sudo npm install -g导致配置混乱解决方案更改 npm 全局安装目录将 npm 全局安装目录从系统目录改为用户目录一劳永逸。步骤 1检查当前 prefixnpmconfig get prefix输出/usr说明需要 root 权限。步骤 2创建用户级目录并设置 prefixmkdir-p~/.npm-globalnpmconfigsetprefix ~/.npm-global步骤 3更新 PATH 环境变量echoexport PATH$HOME/.npm-global/bin:$PATH~/.bashrcsource~/.bashrc注意如果你使用 zsh改为~/.zshrcfish 用户改为~/.config/fish/config.fish。步骤 4验证npminstall-gpnpmpnpm--version验证全局目录是否已切换npmconfig get prefix# 应输出: /home/你的用户名/.npm-globalnpmconfig list修改后的目录结构~/.npm-global/ ├── bin/ # 可执行文件的符号链接 │ └── pnpm - ../lib/node_modules/pnpm/bin/pnpm.cjs └── lib/ └── node_modules/ # 全局安装的 npm 包 └── pnpm/已安装全局包迁移如果之前用sudo装过全局包建议重装npmlist-g--depth0# 查看有哪些全局包npminstall-gpackage-name# 逐个重装pnpm 简介pnpm 是一个高效、节省磁盘空间的包管理器节省磁盘空间硬链接 符号链接相同版本只存一份安装速度快比 npm 和 Yarn 更快严格依赖管理避免幽灵依赖phantom dependencies原生 monorepo内置 workspace 功能pnpminstall# 安装依赖pnpmaddpkg# 添加依赖pnpmupdate# 更新依赖pnpmrunscript# 运行脚本常见问题1. source 后 pnpm 仍报 command not foundecho$SHELL# 确认当前 shellcat~/.bashrc|grepnpm-global# 确认配置已写入VSCode 终端可能需要重启。2. 恢复默认 prefixnpmconfig delete prefix3. nvm 环境下的全局包每个 Node.js 版本有独立全局包建议在 nvm 环境下也运行以上配置。核心要点知识点说明EACCES 错误npm prefix 默认/usr无写入权限根本解决npm config set prefix ~/.npm-globalPATH 配置将~/.npm-global/bin加入 PATH永久生效写入 shell 配置文件即可原文链接https://livebug.github.io/vpblogs/learn/NodeJs/2026-05-02-npm-eacces-fix-pnpm-install.html