在使用node的過程當中,用npm安裝一些模塊,特別是全局包的時候,因爲Mac系統安全性的限制,常常出現安裝沒有權限,或者安裝完成使用時出現Command not found
的狀況。node
以前我都是經過使用修改權限的方式來解決,可是太麻煩又感受不太安全,因而我就到網上找解決的方法,發現其實官方也是推薦咱們使用node的管理工具來解決這個問題的。官方推薦了兩個n
和nvm
,這裏我選擇的是nvm
。git
至於二者的區別能夠看一下淘寶團隊的一篇文章管理node版本,選擇nvm仍是n?github
這篇文章主要想說的就是在Mac下nvm的安裝和遇到的問題。npm
注意:不要使用
Homebrew
安裝nvm,這個在nvm
的官方文檔中有說明。安全
具體的步驟以下:bash
首先打開終端,進入當前用戶的home目錄中。網絡
cd ~
複製代碼
而後使用ls -a
顯示這個目錄下的全部文件(夾)(包含隱藏文件及文件夾),查看有沒有.bash_profile
這個文件。curl
ls -a
複製代碼
若是沒有,則新建一個。electron
touch ~/.bash_profile
複製代碼
若是有或者新建完成後,咱們經過官方的說明在終端中運行下面命令中的一種進行安裝:工具
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
複製代碼
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
複製代碼
在安裝完成後,也許你會在終端輸入nvm
驗證有沒有安裝成功,這個時候你會發現終端打出Command not found
,其實這並非沒有安裝成功,你只須要重啓終端就行,再輸入nvm
就會出現Node Version Manager
幫助文檔,這代表你安裝成功了。
這裏須要注意的幾點就是:
第一點 不要使用homebrew
安裝nvm
第二點 關於.bash_profile
文件。若是用戶home
目錄下沒有則新建一個就能夠了,不須要將下面的兩段代碼寫進去,由於你在執行安裝命令的時候,系統會自動將這兩句話寫入.bash_profile
文件中。網絡上我找了好多文章都是說在安裝前先手動寫進去,通過測試這是沒有必要的,並且好像會形成安裝不成功,這一點須要注意一下。
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
複製代碼
nvm ls-remote
列出全部可安裝的版本
nvm install <version>
安裝指定的版本,如nvm install v8.14.0
nvm uninstall <version>
卸載指定的版本
nvm ls
列出全部已經安裝的版本
nvm use <version>
切換使用指定的版本
nvm current
顯示當前使用的版本
nvm alias default <version>
設置默認node版本
在終端咱們能夠使用which node
來查看咱們的node
被安裝到了哪裏,這裏終端打印出來的地址實際上是你當前使用的node版本快捷方式的地址。
/Users/你的用戶名/.nvm/versions/node/v10.13.0/bin/node
複製代碼
若是你想查看全部node
版本的安裝文件夾,咱們能夠在訪達(finder)
中使用快捷鍵Command+Shift+G
輸入/Users/你的用戶名/.nvm/versions
地址就能夠看到。
可是這裏想說的是Mac默認是不顯示隱藏文件夾的,.nvm
是個隱藏文件夾在訪達(finder)
中看不到,直接輸入地址是無效的,在Mac下顯示隱藏文件的快捷鍵是Command+Shift+.
,關閉也是這個快捷鍵。
看!這是個人!
這是在v8.14.0
版本node
的lib
中node_modules
下的模塊,能夠看到我剛剛安裝的cnpm
和electron
可是在v10.13.0
一樣的目錄下只有npm
因此能夠知道在nvm
下node
版本管理方式,安裝的模塊不是公用的,也就是說你在切換版本後須要在切換的版本下從新安裝,這一點和n
是不一樣的,固然這也是它的優點。