volta-另一个好使的包管理工具

1,618 阅读5分钟

一、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 的功能依赖于创建符号链接,因此您必须:

image.png

2.2安装Volta后

安装Volta到电脑后需要对其进行环境变量配置,这里我直接使用了原本安装的目录(Volta的安装是默认的路径,安装过程中不可改变),如果安装的盘不够大的话,可以在其他盘中新建目录将Volta的文件内容转移,可参考文章:volta下载以及使用_volta安装-CSDN博客

image.png 这里配置完成点击确认后,在终端中打开输入volta -v

image.png 安装成功。

安装node与npm

管理工具链

可以使用两个命令控制由 Volta 工具链管理的工具: Volta install 和 Volta uninstall

安装 Node 引擎

要将工具安装到工具链中,请设置该工具的默认版本。Volta 将始终使用此默认值,除非您在已将 Volta 配置为使用其他版本的项目目录中工作。当您选择默认版本时,Volta 也会将该版本下载到本地缓存中。

例如,您可以选择 的确切版本作为默认版本:node

举例:在全局默认安装一个版本

volta install node@16.14.2

image.png

您无需指定精确的版本,在这种情况下,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保存的版本号

image.png

此刻,全局与项目的版本可以分开管理

image.png

遇到的报错问题

1、在shell中安装了Volta成功,然后依次安装所需的node和npm把版本,然后在项目的cmd中重复安装所需版本操作,npm i,npm run dev 成功启动,但是在vscode中,去npm和node -v查找,直接报错:

image.png

node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序  
的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试  
一次。  
所在位置 行:1 字符: 1  
+ node -v  
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的  
名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一  
次。  
所在位置 行:1 字符: 1  
+ npm -v  
+ ~~~  
+ CategoryInfo : ObjectNotFound: (npm:String) [],  
CommandNotFoundException  
+ FullyQualifiedErrorId : CommandNotFoundException

这里我查找了一下,可能是环境变量的问题,这时我这里安装了nvm和Volta,怕其路径错误,所以卸载了nvm,重新操作,以上行为,依旧报错。

image.png

然后还是将问题锁定在环境变量路径上, 重新配置node和npm的环境变量。 此操作可以在配置Volta环境变量时顺手操作。

image.png 然后重新打开vscode,输入node和npm版本查看,操作成功,npm run dev 打开项目

image.png 2、项目提交合并后,同事新下载了一些插件,但是我这里npm i xxx之后报错,大概时版本问题,于是我准备把node_modules删除重新npm i一下,结果报错:

image.png

也是版本冲突问题,此刻想尝试一下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/clinpm 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 ,项目启动成功。(如果需要额外下载插件,按照提示下载即可)