3、处理npm权限问题

当尝试全局安装某个包得时候,你可能会收到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

--

文章导航