一、问题
使用gulp构建老项目时报错:ReferenceError: primordials is not defined,参考解决 primordials is not defined 问题,需要回退npm版本。
搜索了一下:
管理 node 版本,选择 nvm 还是 n?
n PK nvm 方法使用
由于我本地已经安装了npm,所以选了n,装完才发现不支持windows……然后再去装nvm!!
参考https://stackoverflow.com/q/55921442/6304805,使用nvm use 11.15.0将本地node切换到这个11.15.0的版本, 再重新安装全局包(每个node版本下的全局包都要重新安装), 这时再去重新install下自己的项目, 就不会出现primordials is not defined报错了
二、安装nvm
参考
Windows下完全卸载node.js并安装node.js的多版本管理工具nvm-windows
Windows nvm的安装使用(及排坑)
windows下通过nvm安装node(内含卸载node)
Windows下完全卸载node.js并安装node.js的多版本管理工具nvm-windows
进入https://github.com/coreybutler/nvm-windows/releases,下载安装.
最好在卸载前重启一下电脑,卸载完毕后也重启一下。
image.png这里是因为安装到了Program Files,有空格,导致失败。当然,也不能安装到有中文的路径上。
三、使用nvm
在使用前,因为某些原因,需要指定镜像。打开我们的nvm安装目录找到settings.txt
image.png
在末尾添加如下内容:
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
1.nvm list
如果是第一次安装,使用该命令结果如下:No installations recognized.
2.nvm list available
查看可安装的nodejs版本
输入该命令结果如下:
C:\Users\Lewis>nvm list available
| CURRENT | LTS | OLD STABLE | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
| 11.10.0 | 10.15.1 | 0.12.18 | 0.11.16 |
| 11.9.0 | 10.15.0 | 0.12.17 | 0.11.15 |
| 11.8.0 | 10.14.2 | 0.12.16 | 0.11.14 |
| 11.7.0 | 10.14.1 | 0.12.15 | 0.11.13 |
| 11.6.0 | 10.14.0 | 0.12.14 | 0.11.12 |
| 11.5.0 | 10.13.0 | 0.12.13 | 0.11.11 |
| 11.4.0 | 8.15.0 | 0.12.12 | 0.11.10 |
| 11.3.0 | 8.14.1 | 0.12.11 | 0.11.9 |
| 11.2.0 | 8.14.0 | 0.12.10 | 0.11.8 |
| 11.1.0 | 8.13.0 | 0.12.9 | 0.11.7 |
| 11.0.0 | 8.12.0 | 0.12.8 | 0.11.6 |
| 10.12.0 | 8.11.4 | 0.12.7 | 0.11.5 |
| 10.11.0 | 8.11.3 | 0.12.6 | 0.11.4 |
| 10.10.0 | 8.11.2 | 0.12.5 | 0.11.3 |
| 10.9.0 | 8.11.1 | 0.12.4 | 0.11.2 |
| 10.8.0 | 8.11.0 | 0.12.3 | 0.11.1 |
| 10.7.0 | 8.10.0 | 0.12.2 | 0.11.0 |
| 10.6.0 | 8.9.4 | 0.12.1 | 0.9.12 |
| 10.5.0 | 8.9.3 | 0.12.0 | 0.9.11 |
| 10.4.1 | 8.9.2 | 0.10.48 | 0.9.10 |
This is a partial list. For a complete list, visit https://nodejs.org/download/release
3.安装指定版本的nodejs
nvm install 8.11.2 64-bit
安装成功后可以查询看看已安装的nodejs版本:
C:\Users\Lewis>nvm list
8.11.2
有需要的话,可以继续安装其他版本的nodejs。
4.使用指定版本的nodejs
nvm use 8.11.2
安装成功后可以验证下版本:
C:\Users\Lewis>nvm list
* 8.11.2 (Currently using 64-bit executable)
C:\Users\Lewis>node -v
v8.11.2
如果有报错:
C:\Users\cuixu>nvm use 17.6.0
exit status 1: �ܾ����ʡ�
参考解决问题:使用nvm use出现exit status 1与exit status 145乱码
我们可以在Windows10系统的开始菜单上,单击鼠标右键,
image.png
也可以参考Windows10将CMD添加到右键菜单
5.删除指定版本的nodejs
nvm uninstall 8.11.2
四、Windows上安装NVM之后找不到NPM的解决办法
去NVM的安装路径下(通常为c:\users<your user>\AppData\Roaming\nvm)查看了一下。NVM将所有安装的Node.js的不同版本存放在这个目录下,当使用nvm use命令时,会将对应版本的Node.js目录中的内容拷贝到C:\Program Files\nodejs目录中,从而达到切换不同Node.js版本的目的。但是这个目录下的node_modules目录是空的!怎么回事?
通过搜索,我找到在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此时并没有报告任何错误,而是仍然显示已安装成功。
既然这是NVM自身的问题,那我们只能通过手动的方法来修复。从Node.js官网下载对应版本的压缩包,将其中node_modules目录下的内容拷贝到NVM目录下对应Node.js安装目录中的node_modules中。如果NVM目录下有多个Node.js版本,则需要手动拷贝每个Node.js版本中node_modules目录的内容。
如https://nodejs.org/download/release/v10.6.0/是Node.js v10.6.0版本的下载地址。下载node-v10.6.0-win-x64.zip之后解压,将全部文件拷贝到NVM目录下对应Node.js版本目录中。
再次使用nvm use命令切换不同版本的Node.js,然后在命令行通过node -v查看当前Node.js版本,同时输入npm看看该命令是否有效。注意,如果当前就在v10.6.0版本,需要切换到另一个版本,再切换回来,这样才会把解压的内容复制到nodejs安装目录。
网友评论