不久前本身工做的电脑上Node.js升级了,致使有一个依赖的项目没法正常启动,因而到Google上搜了一把,找到stackoverflow上的一个解决办法。基本意思是说当前的Node.js版本和gulp 3不兼容,要么将gulp升级到4,要么将Node.js降回到原来的版本。因而突然想到以前在Ubuntu上安装过NVM,Windows上应该也有对应的版本,因而在github上搜了一下,果真有专门针对Windows的版本。node
下载安装后,能够直接经过NVM命令在同一台电脑上安装多个不一样版本的Node.js,并且能够随意切换版本。git
可是经过nvm use命令使用指定的Node.js版本以后,发现没法使用npm命令。github
按照错误描述,应该是在对应的目录中没有找到npm-cli.js这个文件。因而去NVM的安装路径下(一般为c:\users<your user>\AppData\Roaming\nvm)查看了一下。npm
NVM将全部安装的Node.js的不一样版本存放在这个目录下,当使用nvm use命令时,会将对应版本的Node.js目录中的内容拷贝到C:\Program Files\nodejs目录中,从而达到切换不一样Node.js版本的目的。可是这个目录下的node_modules目录是空的!怎么回事?gulp
经过搜索,我找到在github上的nvm-windows的issues中也有人在问一样的问题。基本意思就是说npm的仓库已经从https://github.com/npm/npm移到https://github.com/npm/cli了,可是NVM v1.1.7并无作相应的调整,因此经过nvm install安装Node.js时对应的npm实际上并无安装成功,不过NVM此时并无报告任何错误,而是仍然显示已安装成功。windows
既然这是NVM自身的问题,那咱们只能经过手动的方法来修复。从Node.js官网下载对应版本的压缩包,将其中node_modules目录下的内容拷贝到NVM目录下对应Node.js安装目录中的node_modules中。若是NVM目录下有多个Node.js版本,则须要手动拷贝每一个Node.js版本中node_modules目录的内容。命令行
如https://nodejs.org/download/release/v11.15.0/是Node.js v11.15.0版本的下载地址。下载以后打开压缩包,将其中的node_modules/npm目录解压并拷贝到NVM目录下对应Node.js下的node_modules目录中。blog
再次使用nvm use命令切换不一样版本的Node.js,而后在命令行经过node -v查看当前Node.js版本,同时输入npm看看该命令是否有效。get