问题描述
nvm安装node后,也会自动安装npm工具,但是在提示安装完成之后,使用npm相关命令时,会报如下错误
Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js'
原因分析
1.使用nvm安装node之后,会在nvm的目录下(默认是:C:\Users\$username(你自己的用户名)\AppData\Roaming\nvm),
生成对应版本的文件夹(我安装的是最新的稳定版v12.18.3)
2.node安装完成之后,会自动下载npm进行安装,下载npm过程中,nvm的目录下会出现temp文件夹,
此时文件夹中含有下载好的npm压缩包,我的版本是npm-v6.14.6.zip
3.下载npm之后会自动进行解压安装,问题就出现在这里,temp文件夹中虽然成功解压了npm-v6.14.6.zip,
但是并未成功将文件放入到对应的v12.18.3这个文件夹的node_modules目录下,虽然提示了npm安装成功,但node_modules目录却是空的
4.我猜测nvm应该是将各个版本目录下的node_modules映射到C:\Program Files\nodejs\node_modules文件夹中,所以安装好的版本文件夹中node_modules为空,会导致在使用npm时会提示在node_modules中找不到npm-cli.js从而报错
解决方案(以版本12.18.3为例)
1.执行命令nvm install 12.18.3, 此时开始下载安装node,出现图片中的红色框部分提示,此时nvm文件夹下会出现对应版本的文件夹v12.18.3
2.node安装完成后,会开始下载npm,出现图片中的蓝色框部分提示,此时nvm文件夹下就会出现temp文件夹,这时将里面下载好的压缩包npm-v6.14.6.zip复制出来
3.将npm-v6.14.6.zip解压后会生成cli-v6.14.6文件夹,里面就是npm的所有文件
4.将cli-v6.14.6重命名为npm,并复制到v12.18.3文件夹下的node_modules文件夹中
完成!此时npm可以正常使用~