當(dāng)嘗試全局安裝某個(gè)包得時(shí)候,你可能會(huì)收到EACCES錯(cuò)誤。這說(shuō)明你沒(méi)有權(quán)限寫(xiě)入npm用于存儲(chǔ)全局包和命令的目錄。
你可以用下面三種方法解決此問(wèn)題:
1. 修改npm默認(rèn)目錄的權(quán)限;
2. 將npm默認(rèn)目錄定向到其他你具有讀寫(xiě)權(quán)限的目錄;
3. 使用某個(gè)包管理器來(lái)安裝node,它會(huì)為你處理好權(quán)限問(wèn)題。
繼續(xù)下一步之前,你最好先備份以下你的電腦。
## 方法1:修改npm默認(rèn)目錄的權(quán)限
1、找到npm的目錄路徑:
~~~
npm config get prefix
~~~
對(duì)于很對(duì)系統(tǒng),路徑將會(huì)是 /usr/local.
警告:如果出來(lái)的路徑僅是 /usr,請(qǐng)調(diào)到方法2,否則你可能會(huì)設(shè)置錯(cuò)誤。
2、將npm目錄的擁有者修改為當(dāng)前用戶的名字(你賬戶的用戶名):
~~~
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
~~~
這會(huì)改變npm及其他工具用到的子文件夾的權(quán)限(lib/node_modules, bin, and share)。
## 方法2:將npm默認(rèn)目錄定向到其他你具有讀寫(xiě)權(quán)限的目錄
很多時(shí)候你可能并不想改變npm所用的默認(rèn)目錄(如/usr)的擁有者,因?yàn)檫@可能會(huì)導(dǎo)致一些問(wèn)題,比如你在與其他用戶共用此系統(tǒng)時(shí)。
這時(shí),你可以設(shè)置npm整個(gè)地去使用另一個(gè)目錄。我將它設(shè)置為我的主文件夾下的一個(gè)隱藏的目錄。
1、創(chuàng)建一個(gè)目錄用作全局安裝:
~~~
mkdir ~/.npm-global
~~~
2、配置npm使用這個(gè)新目錄:
~~~
npm config set prefix '~/.npm-global'
~~~
3、打開(kāi)或者創(chuàng)建一個(gè)“~/.profile”文件并添加下行代碼:
~~~
export PATH=~/.npm-global/bin:$PATH
~~~
4、返回命令行,更新系統(tǒng)變量:
~~~
source ~/.profile
~~~
測(cè)試:不用sudo,全局下載安裝一個(gè)包:
~~~
npm install -g jshint
~~~
不使用第2-4步的方法的話,你也可以使用相應(yīng)的環(huán)境變量(比如如果你不想編輯~/.profile)來(lái)實(shí)現(xiàn):
~~~
NPM_CONFIG_PREFIX=~/.npm-global
~~~
## 方法3:使用某個(gè)包管理器來(lái)為你解決權(quán)限問(wèn)題。
如果你正在Mac OS上全新安裝node,你可以使用Homebrew包管理器,避免所有的問(wèn)題。Homebrew使用正確的權(quán)限設(shè)置它安裝的程序來(lái)填坑。(Homebrew真的很“自釀”……)
~~~
brew install node
~~~
--
