记录一次使用 yarn patch 遇到的问题

最近在修改 node_modules 里的文件时(具体可以参考我的另一篇文章—修改 node_modules 里文件的正确姿势),发现了 yarn patch 这个特性,这是 v2 版本的一个新特性,于是想动手实验一番,结果报了如下错误:
在这里插入图片描述
意思是说在我的 lockfile 文件里面找不到我的这个依赖包,我一脸黑人问号, 明明刚安装了这个包,为什么会找不到呢?
在这里插入图片描述
于是我重新 yarn install 一下,发现了如下错误(用的是vue-cli4):
在这里插入图片描述
猜想会不会是因为 vue-loader-v16@16.2.0 这个包的镜像问题导致最后安装没有成功,然后去 npm 搜了一下这个包,发现没有这个版本的包依赖,又去工程项目里面搜了一下是哪个包依赖了 vue-loader-v16,发现了这个
在这里插入图片描述
“npm:” 是什么鬼,查了一下,发现这是一个别名,也就是说,安装 vue-loader-v16 的时候会去安装 vue-loader@^16.1.0,难道是 v2 版本的 yarn 安装的时候识别不出这种别名吗?因为我发现用 v1 版本的 yarn 安装的时候是没问题的。于是我立马试验了一番,另起一个工程,添加 一个包别名,是能安装成功的,证明 v2 版本的 yarn 识别这种别名是没有问题的。那到底是什么原因导致没有安装成功呢?

仔细看最开始的报错,注意到这段话, “try to make an install to update your resolutions”,查看 v1 版本的 yarn.lock 文件时,发现的是这样
在这里插入图片描述
安装包的地址应该是保存在 resolved 字段里面的,但是为什么这里的报错却提示是 resolutions 呢?难道 v2 版本的 yarn 换了字段名吗?于是我删掉了 yarn.lock 文件,重新 yarn install 一下,结果安装成功了,然后我查看了一下 v2 版本的 yarn.lock 文件
在这里插入图片描述
发现里面的字段名的确是 resolution ,由此证实了我的猜想。

所以最开始的安装没成功是因为 yarn 试图去找 resolution 对应的安装包地址,结果没有找到而报错。

由此得出结论:当把 yarn 升级到 v2 时,要先删除原来的 yarn.lock 文件,然后再执行 yarn install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值