共计 874 个字符,预计需要花费 3 分钟才能阅读完成。
最近在批改 node_modules 里的文件时(具体能够参考我的另一篇文章—如何批改 node_modules 里的文件),发现了 yarn patch 这个个性,这是 v2 版本的一个新个性,于是想入手试验一番,后果报了如下谬误:
意思是说在我的 lockfile 文件外面找不到我的这个依赖包,我一脸黑人问号,明明刚装置了这个包,为什么会找不到呢?
于是我从新 yarn install
一下,发现了如下谬误(用的是 vue-cli4):
猜测会不会是因为 vue-loader-v16@16.2.0 这个包的镜像问题导致最初装置没有胜利,而后搜了一下这个包,发现没有这个版本的包依赖,又持续搜了一下是哪个包依赖了 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
。