一、nvm的报错
对低版本的项目进行二次开发时,我的nvm管理工具报错了,node与npm的版本不一致,在我重新对nvm进行一系列操作且查询所有可知信息仍然报错后,脑子里突然回想起之前看到的另一个包管理工具---Volta。
其实这里nvm报版本错误是因为低版本的node没有自动将npm一起下载下来,这时需要手动下载。
npm下载地址(下载对应的zip文件):npm.taobao.org/mirrors/npm…
node版本对应npm版本:nodejs.org/zh-cn/downl… (或者nvm list available查看)
因为我安装了Volta,直接将nvm卸载了没有进行这一步修改操作。 这里可以参考文章:node没有自动安装npm时,如何手动安装 npm_电脑装了node但是没有npm如何安装npm-CSDN博客
二、使用Volta
这里可以参考官网:开始使用 |沃尔特 (volta.sh)
因为我这里是直接windows系统,对我来说可以直接安装使用。 对于 Windows,请下载并运行 Windows 安装程序,然后按照说明进行操作。
2.1、windows安装
注意:
Volta 的功能依赖于创建符号链接,因此您必须:
- 启用开发人员模式(推荐)
- 使用提升的权限运行 Volta(不推荐)
2.2安装Volta后
安装Volta到电脑后需要对其进行环境变量配置,这里我直接使用了原本安装的目录(Volta的安装是默认的路径,安装过程中不可改变),如果安装的盘不够大的话,可以在其他盘中新建目录将Volta的文件内容转移,可参考文章:volta下载以及使用_volta安装-CSDN博客
这里配置完成点击确认后,在终端中打开输入
volta -v
安装成功。
安装node与npm
管理工具链
可以使用两个命令控制由 Volta 工具链管理的工具: Volta install 和 Volta uninstall。
安装 Node 引擎
要将工具安装到工具链中,请设置该工具的默认版本。Volta 将始终使用此默认值,除非您在已将 Volta 配置为使用其他版本的项目目录中工作。当您选择默认版本时,Volta 也会将该版本下载到本地缓存中。
例如,您可以选择 的确切版本作为默认版本:node
举例:在全局默认安装一个版本
volta install node@16.14.2
您无需指定精确的版本,在这种情况下,Volta 将选择合适的版本来满足您的要求:
volta install node@14
您还可以指定 - 甚至完全省略版本,Volta 将选择最新的 LTS 版本:latest
volta install node
运行这些命令之一后,默认情况下,Volta 在您的环境(或 Windows)中提供的可执行文件将自动运行您选择的 Node 版本。node``PATH``Path
同样,您可以分别使用 和 选择 npm 和 Yarn 包管理器的版本。这些工具将使用所选的 Node 的默认版本运行。volta install npm``volta install yarn
管理项目
Volta 允许协作者团队或社区对他们用于项目的开发工具进行标准化。
在终端中安装的node版本为16.14.2,那么项目中可以安装对应匹配的node版本
安装命令:volta pin
volta pin node@18.2.0
volta pin npm@8.9.0
此刻在项目的package.json文件中,就会显示Volta保存的版本号
此刻,全局与项目的版本可以分开管理
遇到的报错问题
1、在shell中安装了Volta成功,然后依次安装所需的node和npm把版本,然后在项目的cmd中重复安装所需版本操作,npm i,npm run dev 成功启动,但是在vscode中,去npm和node -v查找,直接报错:
node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序
的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试
一次。
所在位置 行:1 字符: 1
+ node -v
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的
名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一
次。
所在位置 行:1 字符: 1
+ npm -v
+ ~~~
+ CategoryInfo : ObjectNotFound: (npm:String) [],
CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
这里我查找了一下,可能是环境变量的问题,这时我这里安装了nvm和Volta,怕其路径错误,所以卸载了nvm,重新操作,以上行为,依旧报错。
然后还是将问题锁定在环境变量路径上,
重新配置node和npm的环境变量。 此操作可以在配置Volta环境变量时顺手操作。
然后重新打开vscode,输入node和npm版本查看,操作成功,npm run dev 打开项目
2、项目提交合并后,同事新下载了一些插件,但是我这里npm i xxx之后报错,大概时版本问题,于是我准备把node_modules删除重新npm i一下,结果报错:
也是版本冲突问题,此刻想尝试一下cnpm i,但是不行,暂时还没找到解决方法
然后执行命令npm i --legacy-peer-deps,可忽略vue项目中引入相同名称但不同版本的modules问题并继续安装。
此处错误参考文章:npm ERR! code ERESOLVE-CSDN博客
3、运行之前的老项目npm run serve,报错npm ERR! XXX@0.1.0 serve: vue-cli-service serve --open
参考了好多解决方法,发现之前项目是以vue/cli为底,在终端vue -V,报错vue不存在,没有启动环境。
下载volta install @vue/cli和npm install webpack,然后再次vue -V,报错vue不存在,没有配置环境变量。
我的下载位置在c盘,C:\Program Files\Volta\tools\image\packages\@vue\cli,路径加上后在项目中切换node版本,然后npm install ,报错Error: Cannot find module 'webpack/lib/RuleSet,在下载node_modules中没有找到该模块。
在确保了node、npm版本等步骤后,排查到webpack上,版本可能过高,降低版本为4,这里直接用了同事的package.json文件,然后删除之前下载的node_modules,重新npm i,下载成功,npm run serve ,项目启动成功。(如果需要额外下载插件,按照提示下载即可)