【NodeJS】- 使用NVM安装npm失败后,手动安装npm
安装NVM之后,我们通常会配置镜像,在setting文件中,添加镜像路径
node_mirror: https://npm.taobao.org/mirrors/node npm_mirror: https://npm.taobao.org/mirrors/npm
但是这两天镜像突然炸了,于是我删掉了镜像地址,使用官方直接下载。
但是npm下载非常困难,而且高版本的npm还存在workspaces文件引入失败问题,需要手动拷贝文件,削微有点麻烦,所以记录一下折腾的过程。
1、首先我们选择一个node的版本进行下载,如图所示,下载20.1.0版本的node成功了,但是对应的9.6.4版本的npm下载失败了
2、我们打开npm下载的网页(https://registry.npmmirror.com/binary.html?path=npm/),找到对应的npm包进行下载
3、找到NVM安装目录,将下载的npm包拷贝到对应的目录中,并解压,然后将解压出来的文件名,改为 npm
4、我使用7z解压的时候,会出现没有权限的问题,如下图所示,用管理员运行7z软件,然后解压就行了
5、在【开始】栏,右击7-zip软件,然后点【以管理员身份运行】
6、然后在解压软件中将npm包解压出来,再强调一遍,记得将解压出来的文件【cli-9.6.4】改名成【npm】
7、然后进到npm文件夹下的bin文件夹中,将里面的四个文件拷贝出来,如图所示
拷贝到如图位置
8、此时我们使用nvm切换到20.1.0版本的node,查看npm版本的时候,会出现错误
有些版本查看版本时不会出错,但是在下载时,会报错:
npm ERR! code MODULE_NOT_FOUND npm ERR! Cannot find module 'libnpmfund' npm ERR! Require stack: npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\utils\reify-output.js npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\utils\reify-finish.js npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\commands\install.js npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\npm.js npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\lib\cli.js npm ERR! - C:\Users\LENOVO\AppData\Roaming\nvm\v16.20.1\node_modules\npm\bin\npm-cli.js npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\LENOVO\AppData\Local\npm-cache\_logs\2024-01-30T05_06_13_698Z-debug-0.log
问题都是类似的,就是npm的node_modules中的有些库不完整,我们进到node_modules文件夹中拉到最下面,就会看见,很多库都是通过 ../workspaces/libnpmaccess 的形式引入的,但是在Windows环境下, 这个链接是不管用的,所以我们需要手动引入这些文件。
但是值得注意的是,除了node_modules文件夹下有这些链接,node_modules/@npmcli下也有,如图所以,我们要对照一下这些文件的位置,千万不要弄错了
9、找到 workspaces 中的对应文件,拷贝到对应的文件夹下,不同版本的文件有些不同,有些没有config文件,arborist和config拷贝到 node_modules/@npmcli,其他的拷贝到 node_modules 下,记得拷贝前,将链接先删掉
10、此时我们再查看npm的版本,已经没问题了,下载yarn也没问题