當嘗試全局安裝某個包得時候,你可能會收到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
~~~
--