3、处理npm权限问题

最后更新于:2022-04-02 01:02:26

当尝试全局安装某个包得时候,你可能会收到EACCES错误。这说明你没有权限写入npm用于存储全局包和命令的目录。 你可以用下面三种方法解决此问题: 1. 修改npm默认目录的权限; 2. 将npm默认目录定向到其他你具有读写权限的目录; 3. 使用某个包管理器来安装node,它会为你处理好权限问题。 继续下一步之前,你最好先备份以下你的电脑。 ## 方法1:修改npm默认目录的权限 1、找到npm的目录路径: ~~~ npm config get prefix ~~~ 对于很对系统,路径将会是 /usr/local. 警告:如果出来的路径仅是 /usr,请调到方法2,否则你可能会设置错误。 2、将npm目录的拥有者修改为当前用户的名字(你账户的用户名): ~~~ sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} ~~~ 这会改变npm及其他工具用到的子文件夹的权限(lib/node_modules, bin, and share)。 ## 方法2:将npm默认目录定向到其他你具有读写权限的目录 很多时候你可能并不想改变npm所用的默认目录(如/usr)的拥有者,因为这可能会导致一些问题,比如你在与其他用户共用此系统时。 这时,你可以设置npm整个地去使用另一个目录。我将它设置为我的主文件夹下的一个隐藏的目录。 1、创建一个目录用作全局安装: ~~~ mkdir ~/.npm-global ~~~ 2、配置npm使用这个新目录: ~~~ npm config set prefix '~/.npm-global' ~~~ 3、打开或者创建一个“~/.profile”文件并添加下行代码: ~~~ export PATH=~/.npm-global/bin:$PATH ~~~ 4、返回命令行,更新系统变量: ~~~ source ~/.profile ~~~ 测试:不用sudo,全局下载安装一个包: ~~~ npm install -g jshint ~~~ 不使用第2-4步的方法的话,你也可以使用相应的环境变量(比如如果你不想编辑~/.profile)来实现: ~~~ NPM_CONFIG_PREFIX=~/.npm-global ~~~ ## 方法3:使用某个包管理器来为你解决权限问题。 如果你正在Mac OS上全新安装node,你可以使用Homebrew包管理器,避免所有的问题。Homebrew使用正确的权限设置它安装的程序来填坑。(Homebrew真的很“自酿”……) ~~~ brew install node ~~~ --
';