前言
在學習Vue-CLI3的時候使用了全局安裝,提示安裝失敗,本以為是npm版本問題,在更新npm的過程中又出現了 npm ERR! code: 'EACCES' ,查了一下發現是權限問題。
看到權限不足第一反應就是使用 sudo, sudo 確實能解決一些權限問題,但卻不是最好的解決方案。
正文
官方給出兩種方法 :
使用node版本管理器重新下載npm(Reinstall npm with a node version manager)
或者
手動修改npm的默認目錄(Manually change npm’s default directory)
------------------------------------分割線------------------------------------
先說第一種方法,我這里是用的是 nvm。
安裝命令:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
or Wget:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
安裝好會提示重新啟動終端,重啟之后輸入 nvm --version , 顯示版本號則說明安裝成功。
如果顯示 command not found: nvm 可能是nvm沒安裝好,還有可能是缺少 .bash_profile 文件。
在home目錄創建 .bash_profile 文件 (cd ~ , touch .bash_profile),寫入
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
保存以后重新運行安裝命令,安裝后重啟終端即可。 我運行 npm install -g @vue/cli 可以下載了。
第二種方法,手動修改npm的默認目錄(具有讀寫權限的目錄),如下
1.創建全局目錄
mkdir ~/.npm-global
2.配置npm使用新路徑
npm config set prefix '~/.npm-global'
3.打開或創建一個~/.profile
文件並添加以下代碼
export PATH=~/.npm-global/bin:$PATH
4.在命令行上,更新系統變量
source ~/.profile
5.測試新配置,不用sudo全局下載安裝包
npm install -g jshint
不想使用 2-4,還可以使用相應的環境變量(例如,你不想修改~/.profile
)來實現
NPM_CONFIG_PREFIX=~/.npm-global
參考資料:
Resolving EACCES permissions errors when installing packages globally
Downloading and installing Node.js and npm
以上。