2016/03/27

[Node.js] 在 Mac 上使用 Homebrew 更新全域 npm 的解決方法

近期在 Mac 上更新 npm 的全域版本時 (npm update npm -g),造成會出現一些奇怪的問題,在未更新前其實一切都正常

一般作業像是使用 gulp 也都沒有問題,但是若是要顯示一些資訊,例如列出全域的安裝套件,卻會出現一些 ERROR 訊息

後來把整個原本的 /usr/local/lib/node_modules 全部刪掉,重新再安裝 Node 並手動安裝 npm  後,終於又恢復正常啦~ 沒有 ERROR 的訊息感覺才正確!

參考資料:



以下指令說明:

  • 把原本裝的全域套件先列出存到 ~/node_modules.txt
  • 刪除整個 /usr/local/lib/node_modules 資料內容
  • Homebrew 解除安裝 node
  • Homebrew 安裝 node 但不要 npm
  • 建立 ~/.npmrc 的檔案,內容是 prefix=~/.node 即為 npm  的安裝目錄
  • 下載安裝 npm
  • 把 ~/.node/bin 的路徑加到 ~/.bash_profile
  • 重載 ~/.bash_profile
  • 重新安裝原本的全域套件
  • 刪掉暫存的 ~/node_modules.txt 檔案


執行的指令:

ls -1 /usr/local/lib/node_modules > ~/node_modules.txt
sed -e "s,/\+$,," -e "s,^/\+,," ~/node_modules.txt
rm -rf /usr/local/lib/node_modules
brew uninstall node --force node
brew install node --without-npm
echo prefix=~/.node >> ~/.npmrc
curl -L https://www.npmjs.com/install.sh | sh
echo 'export PATH="$HOME/.node/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
for i in `cat ~/node_modules.txt`;do npm install -g $i;done
rm ~/node_modules.txt