背景
前段时间项目技术升级,把vue2升级为vue3,node也升级为v16.17.0版本,最近又接手了一个vue2的老项目,跑依赖的时候报错,Error:Cannot find module 'node-sass'
。查了很多资料了解到是本地的node版本太高了,和新接手项目里面的node-sass不兼容。
解决方案大体上有三种:
- 1.降级node版本,但是有多个项目时,切换起来会很麻烦
- 2.升级node-sass,改动会很大
- 3.利用工具切换node
综合考虑选择用第3种方案。
通过package.json
文件得知"node-sass": "^4.14.1", "npm": "^6.9.0"
node和npm版本的对应:https://nodejs.org/zh-cn/download/releases/
node和node-sass版本的对应:https://github.com/sass/node-sass/releases
最后选择本地安装两个node版本:v11.15.0、v16.17.0,通过nvm进行切换
操作步骤
- 1.把本地原本的node卸载
- 2.去github上下载nvm安装包:nvm-setup.zip
下载地址:https://github.com/coreybutler/nvm-windows/releases - 3.安装nvm,注意:两次选择文件要安装的目录 第一次是nvm 第二次是node.js,目录名称不可以有空格和中文
- 4.验证是否安装成功
nvm -v
,出现版本号即为成功 - 5.进行对应版本node.js的安装,有两种安装方式:
- 1)在线安装:使用nvm命令
nvm install [version]
, - 2)离线安装:
- a. node官网https://nodejs.org/en/download/,点击红框处
- b.在导航栏输入版本号,回车,找到合适的安装包,这里我用的是
.msi
格式的安装包 - c.在安装node之前,先创建两个文件夹用来存放不同版本的node,注意:先安装低版本,再安装高版本,顺序颠倒的话低版本会安装不上
- d.安装完低版本之后,高版本安装之前,先把低版本的文件夹名称重命名,比如我改成了
v11.15.0aa
,等到高版本安装完成以后记得再改回来,因为如果不修改名字的话在安装新版本的时候无论安装在什么地方,都会把之前的那个干掉 -
e.都安装完之后,开始配置环境变量(此电脑 右键=>属性=>高级系统设置=>环境变量)新建两个系统变量
- f.找到系统变量里面的Path变量,编辑,将上一步骤的两个变量添加进来
- g.
where node
可以查看node安装的路径
- a. node官网https://nodejs.org/en/download/,点击红框处
- 1)在线安装:使用nvm命令
- 6.我安装了两个版本:v11.15.0、v16.17.0,
nvm list
查看已安装的node目录 - 7.
nvm use [version]
可以进行node的切换
到这里的时候遇到了一个报错:
原因是:权限不够,需要以管理员身份运行指令
具体操作:右键电脑“开始”按键,选择Windows PowerShell(管理员)
,再次运行指令,显示成功