npm install时cb() never called!错误解决方法

npm install时cb() never called!错误解决方法

先交代一下背景:开发环境是在Mac下,今天不同于往日,在开发中需要使用supervisor这个包,于是命令行中敲sudo npm install -g supervisor安装,出现了cb() never called!的报错,如下图:
npm install时cb() never called!错误解决方法_第1张图片
在报错的时候给我们说明了错误原因,问题出在npm自身上,回想起前一段时间自己确实手动更新升级了npm版本,出现这样的报错也不难理解了。于是像以往一样百度、谷歌寻找解决方法,很幸运搜索之后发现还是有很多小伙伴遇到同样的问题,借鉴了一下他们的解决方法,加上自己动手实践,于是就把解决方法做个总结。解决方法简单粗暴有效,那就是将node、npm彻底从电脑上先卸载掉,然后重新安装。

先说卸载:

Mac下彻底卸载node和npm方法:

卸载npm(挥刀自宫):

sudo npm uninstall npm -g

检查npm是否卸载完(返回命令不存在时表明卸载成功):

npm -v
// 返回:zsh: command not found npm

卸载node:

卸载node时需根据node安装的方式来决定卸载方式,如果使用nvm(node管理工具)安装的node的话,可以执行nvm uninstall来卸载,如下:

nvm uninstall <version>

由于我之前是从node官网下载的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(查看是否安装,可执行nvm --version,有版本返回则表明已安装),在终端输入下面命令即可安装,详情可查看官网:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

安装完nvm后,可以使用nvm install stable命令安装当前最新的稳定版本

nvm install stable

安装成功后可以使用nvm current查看当前使用的node版本,nvm list查看已安装的node版本,其中绿色箭头表示当前正在使用的,node -vnpm -v检查node和npm是否安装成功,如下图:
npm install时cb() never called!错误解决方法_第2张图片
安装成功后重新执行sudo npm install -g supervisor,结果可以安装成功,如下图:

npm install时cb() never called!错误解决方法_第3张图片
值得一提的是使用nvm安装的node后,在执行npm install 时对应的包都会被放在.nvm对应的node版本下,方便管理。

总结:npm install时遇到cb() never called!报错时,需要知道这是npm自身问题导致的,解决方法就是:卸载node和npm并重新安装。

参考文献:

[1] 使用 nvm 管理不同版本的 node 与 npm
[2] 使用nvm利器,管理node版本
[3] Mac下安装、卸载和管理node——使用nvm
[4] Mac 电脑如何卸载 node

你可能感兴趣的:(node,npm)