目前的情况是:node 可以打印出版本,但是npm就会报错:

➜  ~ node -v    
v6.17.1
➜  ~ npm -v
zsh: command not found: npm

这里有一篇类似问题的解决方案:sudo: npm: command not found

虽然很类似,但是并不适合我的情况,我的由于node版本切换,导致npm升级没有更上,导致的一系列并发症,最后还是通过降低node版本,然后重新升级npm,就正常了。

➜  ~ sudo n 8
➜  ~ node -v
v8.16.0
➜  ~ npm -v
6.4.1
➜  ~ which npm
/usr/local/bin/npm
➜  ~ which node
/usr/local/bin/node
➜  ~ sudo npm i npm -g
➜  ~ npm -v
6.10.1

最后发现,切换到高版本的node,npm又会出错了,然后再继续升级 npm,貌似就可以了 ,但是返回到低版本,又是回归了之前的错误,所以总结如下:

  • 下载最低版本的node;
  • 只执行node最低版本的npm升级;
  • 切换到高版本的node之后,轻易不要升级npm(有时候使用n或者cnpm下载的版本会有出入,我就是走的cnpm的坑)
  • 以后npm升级,先切换到低版本升级,应该就没问题。

流程测试:

➜  ~ n
node/6.17.1
➜  ~ npm -v
4.2.0

➜  ~ sudo npm i npm -g

➜  ~ npm -v
6.10.1
➜  ~ n
node/7.10.1
➜  ~ npm -v
6.10.1
➜  ~ n
node/11.13.0
➜  ~ npm -v
6.10.1
➜  ~ n
node/10.16.0
➜  ~ npm -v
6.10.1
➜  ~ n
node/6.17.1
➜  ~ npm -v
6.10.1
➜  ~ 

现在不管切换到哪个版本,都不会报错了。