npm install時cb() never called!
錯誤解決方法
先交代一下背景:開發(fā)環(huán)境是在Mac下,今天不同于往日,在開發(fā)中需要使用supervisor這個包,于是命令行中敲sudo npm install -g supervisor安裝,出現(xiàn)了cb() never called!的報錯,如下圖:
在報錯的時候給我們說明了錯誤原因,問題出在npm自身上,回想起前一段時間自己確實手動更新升級了npm版本,出現(xiàn)這樣的報錯也不難理解了。于是像以往一樣百度、谷歌尋找解決方法,很幸運搜索之后發(fā)現(xiàn)還是有很多小伙伴遇到同樣的問題,借鑒了一下他們的解決方法,加上自己動手實踐,于是就把解決方法做個總結(jié)。解決方法簡單粗暴有效,那就是將node、npm徹底從電腦上先卸載掉,然后重新安裝。
先說卸載:
Mac下徹底卸載node和npm方法:
卸載npm:
sudo npm uninstall npm -g
檢查npm是否卸載完(返回命令不存在時表明卸載成功):
npm -v
// 返回:zsh: command not found npm
卸載node:
卸載node時需根據(jù)node安裝的方式來決定卸載方式,如果使用nvm(node管理工具)安裝的node的話,可以執(zhí)行nvm uninstall
來卸載,如下:
nvm uninstall
由于我之前是從node官網(wǎng)下載的node包全局安裝的,所以采用第二種方法刪除,即在終端依次輸入如下命令:
sudo npm uninstall npm -g
sudo rm -rf /usr/local/lib/node/usr/local/lib/node_modules/var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
檢查node是否卸載完(返回命令不存在時表明卸載成功):
node -v
// 返回:zsh: command not found node
卸載完成后需重新安裝node和npm,高版本的node都是再帶npm的,所以重新安裝node后npm也就有了,安裝node也有好多種方法,在這兒,我推薦使用nvm安裝:如果自己電腦上還沒有安裝nvm(查看是否安裝,可執(zhí)行nvm --version,有版本返回則表明已安裝),在終端輸入下面命令即可安裝,詳情可查看官網(wǎng):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
安裝完nvm后,可以使用nvm install stable
命令安裝當前最新的穩(wěn)定版本
nvm install stable
安裝成功后可以使用nvm current查看當前使用的node版本,nvm list查看已安裝的node版本,其中綠色箭頭表示當前正在使用的,node -v、npm -v檢查node和npm是否安裝成功,如下圖:
安裝成功后重新執(zhí)行sudo npm install -g supervisor
,結(jié)果可以安裝成功,如下圖:
值得一提的是使用nvm安裝的node后,在執(zhí)行npm install
總結(jié):npm install時遇到cb() never called!報錯時,需要知道這是npm自身問題導致的,解決方法就是:卸載node和npm并重新安裝。