id: fixing-npm-permissions
title: 03-npm權(quán)限修復(fù)
prev: installing-node
next: installing-npm-packages-locally
當(dāng)試圖安裝一個全局包的時候你可能會遇到 EACCES 錯誤。這個錯誤表明你沒有當(dāng)前npm用來存儲全局包命令目錄的寫權(quán)限。
可以通過下面兩種方式之一來修復(fù)解決這個問題:
- 修改npm默認(rèn)目錄的權(quán)限
- 修改npm默認(rèn)目錄的位置
在做接下來修改前最好先備份您的電腦
方式一:修改npm默認(rèn)目錄的權(quán)限
- 找到npm目錄路徑
npm config get prefix
大多數(shù)系統(tǒng),目錄一般是 /usr/local
警告:如果路徑顯示的是 /usr,直接采用第二種方式
- 修改npm目錄的擁有者為當(dāng)前用戶
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
使用這個命令同時修改了npm下面子目錄和其他工具命令(lib/node_modules,bin,and share)
方式二:修改npm默認(rèn)目錄的位置
有時候并不希望修改npm默認(rèn)目錄的擁有者,因為這樣可能會導(dǎo)致一些其他不可預(yù)期的問題,例如:你正在與其他用戶共享同一個系統(tǒng)
我們可以采用修改npm目錄位置。在我們的案例中,使用的是用戶根目錄下面的隱藏目錄
- 創(chuàng)建一個目錄用于全局包安裝
mkdir ~/.npm-global
- 配置npm使其使用新的目錄
npm config set prefix '~/.npm-global
- 打開或者新建~/.profile文件,并添加目錄路徑
export PATH=~/.npm-global/bin:$PATH
- 返回命令行界面,更新系統(tǒng)變量
source ~/.profile
測試:不使用sudo下載一個全局包
npm install -g jshint
jia'r
你也可以通過修改ENV環(huán)境變量來代替24步驟(假如你不想修改/.profile)
NPM_CONFIG_PREFIX=~/.npm-global npm install -g jshint