那些年遇到的npm死坑
是一套node.js的套件管理工具,只要安裝NodeJS完,npm就會跟著安裝好,身為一個現代化的前端工程師一定會經常使用npm,各種神套件透過npm就能安裝好。
只是說……npm這東西真的是很看運氣的,有些人就是天生命好怎麼樣裝都不會出事,像我就是命格差的那個,三不五時npm就是會噴掉,光是看npm噴的那些錯誤訊息頭就暈了。
本篇都是以OS系統為主
1.npm global 裝不了
這有兩種狀況,不過都能用同一種方式解決
第一種就是
npm install -g handlebar
打了上面這段卻完全裝不起來,一直噴錯誤,最簡單的方式相信也是最多人用的方式包括我就是加上sudo,可是這也是最不正確的方式。
sudo npm install -g handlebar
node & npm所執行的那些套件其實並不需要用到root權限,可是我們今天加了sudo給它就是賦予它root權限,那如果我們真的衰小遇到一些惡意的script,那你就準備跟電腦說掰掰了,這篇文章Do not sudo npm有更多對於為什麼不要用sudo的解釋。
第二種狀況就是npm -g install裝得了也裝得好,可是卻跑不動?
我遇到的就是這個哭笑不得的怪坑。
其實上面兩種問題都可以用同一種方式解決,另外開一個global的資料夾,並且把預設的路徑改到這個資料夾上
第一步 mkdir ~/.npm-global //建立資料夾cd npm-global透過下面這段指令更改npm prefixnpm config set prefix '~/.npm-global' //更改路徑再來我們透過vi編輯器來打開~/.profile,記得一定是要在npm-global資料夾內哦輸入vi ~/.profile會進到編輯畫面並且在最上面加上 //編輯export PATH=~/.npm-global/bin:$PATH
接著儲存在打上
source ~/.profile
打完收工,global問題我就是這樣解決的。
2.nodejs & npm版本問題
最近遇到一個情況就是clone公司專案後卻怎麼樣npm run build都失敗,詭異的是其他電腦做一樣的動作就可以成功,檢查才發現原來自己的電腦用的node版本是最新版本,可是其他電腦都是還在Node v6.10版,所以在進行npm install的時候,很多套件都裝不上去。
nodeJS版本最好的解決方式就是NVM(Node Version Manager),如果有用homebrew可以用它來安裝nvm,或是參考官方文件的安裝方式。
brew install nvm
當你需要什麼版本你都可以透過nvm來安裝,打個比方我現在想裝v6.10版
nvm install v6.10
只要這樣輸入,nvm就會幫你裝好並幫你切換到這一個版本的node,那安裝了這麼多版本的node了,要怎麼切換呢?
nvm use v8 //後面都是接版本號就對了
這樣就會幫你切換你已經安裝過的node & npm版本
關於npm的移除
當然也會有很多很雷的情況,會讓你想要把整個npm砍掉再重裝,不過既然要砍就要砍乾淨一點,node & npm一般都儲存在/usr/local/bin,所以我們可以透過rm -rf指令來砍的乾淨俐落。
rm -rf /usr/local/bin/node
rm -rf /usr/local/bin/npm
rm -rf /usr/local/bin/node_modules
以上大概就是我最近使用npm遇到的一些問題。
參考資料