MacOS X 10.10卸载Node
一、起因
最近好像把node给弄坏了,在使用npm init的时候系统报错:
Press ^C at any time to quit.
npm ERR! Darwin 14.5.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "init"
npm ERR! node v4.4.1
npm ERR! npm v2.14.20
npm ERR! code MODULE_NOT_FOUND
npm ERR! Cannot find module 'spdx'
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
根据报错内容搜索了一下,好像是推荐重装
呀。。。。所以思考了一下为什么会坏:
原本通过官方的pkg文件安装的
v0.12.x
版本,node默认在/usr/local/bin
下,WebStorm
可以直接识别位置想同时保存
v0.12.x
版本和安装v4.x.x
版本,所以使用了nvm切换了node版本,后来发现nvm的安装方式不纯洁
,即并没有安装在/usr/local/bin
下导致强迫症发作,一定要装个纯洁版本,找到了n
这个工具~在不懂nvm和n的原理的情况下,不知道怎么搞的就切换错了。。。
没办法,从官方下载4.4.1的pkg安装包版本重新安装,勉强能够供WebStorm使用,所以就这么用着了,知道今天发现了上述错误
所以原因是——版本紊乱了。。。。我准备将node完全卸载后重装
二、nvm与n的机制
请参考这几篇文章:
第一篇是nvm与n的区别,第二篇具体给出了nvm切换版本的例子。总的来说:
nvm
- nvm切换版本后执行node命令时,真正的路径是
~/.nvm/<version>/node
。 - 我所说的
不纯洁
的方式,就是指上面那个意思啦,强迫症伤不起
n
- node的路径一直在
/usr/local/bin
下
三、其实还有一个原因
使用Homebrew安装nvm,并且在zsh的环境下安装的同学,可能会产生冲突,导致nvm的$NVM_DIR
指向了/usr/local/opt/nvm
,详见:
四、卸载node和npm
使用以下命令,参考自[Uninstall nodejs from OSX Yosemite(可能需要翻墙)][4]
# first:
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do sudo rm /usr/local/${f}; done
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
# To recap, the best way (I've found) to completely uninstall node + npm is to do the following:
# go to /usr/local/lib and delete any node and node_modules
cd /usr/local/lib
sudo rm -rf node*
# go to /usr/local/include and delete any node and node_modules directory
cd /usr/local/include
sudo rm -rf node*
# if you installed with brew install node, then run brew uninstall node in your terminal
brew uninstall node
# check your Home directory for any "local" or "lib" or "include" folders, and delete any "node" or "node_modules" from there
# go to /usr/local/bin and delete any node executable
cd /usr/local/bin
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/bin/node
ls -las
# you may need to do the additional instructions as well:
sudo rm -rf /usr/local/share/man/man1/node.1
sudo rm -rf /usr/local/lib/dtrace/node.d
sudo rm -rf ~/.npm