📅  最后修改于: 2023-12-03 15:18:01.702000             🧑  作者: Mango
当使用 npm 安装或升级全局包时,可能会遇到以下错误:
npm ERR! code EACCES
npm ERR! syscall access
npm ERR! path /usr/local/lib/node_modules
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR! { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR! stack:
npm ERR! 'Error: EACCES: permission denied, access \'/usr/local/lib/node_modules\'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.
这种情况通常是由于缺少安装或升级全局包的权限,导致无法将包写入到全局目录下。以下是一些解决方案:
最简单的解决方案是使用 sudo
运行命令。例如,以管理员身份全局安装 npm
:
sudo npm install -g npm
使用 sudo
运行命令时需要注意以下事项:
sudo
会请求输入管理员密码。sudo
,因为会有安全风险。可以尝试将全局包的目录更改为当前用户的主目录下。首先创建一个目录用于存储全局包:
mkdir ~/.npm-global
然后将 npm 的配置修改为使用新的全局包目录:
npm config set prefix '~/.npm-global'
在 .bashrc
或 .bash_profile
文件中加入以下内容:
export PATH=~/.npm-global/bin:$PATH
然后运行以下命令使修改立即生效:
source ~/.bashrc
或者:
source ~/.bash_profile
下次运行 npm 命令时,全局包将被安装在新目录中。
如果出现权限问题,可能是 npm 目录的权限设置不正确。可以运行以下命令修复:
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
上述命令将更改 npm 目录及其子目录和文件的所有者。
最后,如果只是为了在某个特定项目中使用某个包而不是整个系统中都要使用,建议不要全局安装该包。在项目目录下执行以下命令即可:
npm install <package-name>
这样将会把包安装到项目的 node_modules 目录下,只在该项目中可用。
以上是一些常见的解决方案,如果还有其他问题,请仔细阅读错误信息并搜索相关文档解决。