NODE很久未更新(V4.xx),今天去查看官网已经是V9.xx的版本,所以想在我的mac机上进行更新,于是用Homebrew来进行升级,命令如下:
$ brew upgrade node
更新完成,执行命令查看版本:
$ node -v
v9.11.1
已经更新到最新版本,然后准备查看下npm是否已经更新的新版本,结果出现如下错误:
$ npm -v
internal/modules/cjs/loader.js:550
throw err;
^
Error: Cannot find module '../lib/utils/unsupported.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:548:15)
at Function.Module._load (internal/modules/cjs/loader.js:475:25)
at Module.require (internal/modules/cjs/loader.js:598:17)
at require (internal/modules/cjs/helpers.js:11:18)
at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:92:3)
at Module._compile (internal/modules/cjs/loader.js:654:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Module.load (internal/modules/cjs/loader.js:566:32)
at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
啥情况,在网上大致查找原因就是说NPM的版本和当前NODE版本不一致才会这样,让我降低NODE版本,我觉得这个不靠谱,我猜想着降低版本是因为想让NPM和NODE保持一致,而更新NODE版本后NPM为啥不一致呢,是否是由于以前老版本冲突导致呢?于是做如下验证:
1. 首先删除当前NODE
brew uninstall node
2. 查看NODE和NPM还是是否存在(结果发现NPM果然存在)
$ cd /usr/local/lib/node_modules
$ ls
npm
3. 发现NPM存在,所以强制删除npm,然后重新执行安装node
$ sudo rm -rf /usr/local/lib/node_modules/npm
$ brew install node
验证,node和npm都能正常运行。
$ npm -v
5.6.0
结论:如果机器上NODE很久未升级,要更新最新版本,我觉得最稳妥的方式就是先全部删除node和npm,然后在重新安装,而不是直接update。