yarn.lock 介绍
概述
今天本地运行尤大的vue-hackernews-2.0,使用
yarn 命令安装,报错提示
node 版本必须大于7小于9,如下所示:
error upath@1.0.4: The engine "node" is incompatible with this module. Expected version ">=4 <=9". error Found incompatible module
然后我到 package.json 文件里面去看,明明只说了 node 要大于7,没有说要小于9啊。于是我去找 issue,发现竟有人能够解决这个问题。看了下他的解决方法,原来是 yarn.lock 的原因。
于是我查了下 yarn.lock 的资料,记录下来,供以后开发时参考,相信对其他人也有用。
yarn.lock
官方对yarn.lock 文件的说明如下:
为了跨机器安装得到一致的结果,
Yarn需要比你配置在package.json中的依赖列表更多的信息。Yarn需要准确存储每个安装的依赖是哪个版本。
为了做到这样,Yarn使用一个你项目根目录里的yarn.lock文件。这可以媲美其他像Bundler或Cargo这样的包管理器的lockfiles。它类似于npm的npm-shrinkwrap.json,然而他并不是有损的并且它能创建可重现的结果。
需要注意的是:所有 yarn.lock 文件应该被提交到版本控制系统。
npm-shrinkwrap.json
上面说到了 npm-shrinkwrap.json,那 npm-shrinkwrap.json 又是什么呢?通过查资料,简单来说,它是由命令 npm shrinkwrap 生成的,它的作用和 package-lock.json 的作用是一样的,都是用来锁定版本用的。现在有了 package-lock.json 之后就不怎么用 npm-shrinkwrap.json 了。
解决问题
那么一开始我遇到的问题是什么原因呢?怎么解决呢?再次摘抄报错提示如下:
error upath@1.0.4: The engine "node" is incompatible with this module. Expected version ">=4 <=9". error Found incompatible module
那就很简单了,原因是 upath@1.0.4 这个库只支持 >=4 <=9 的 node。那这个库 upath@1.0.4 锁定版本在 1.0.4 了,猜测是因为 yarn.lock 里面锁定了,所以去里面找,果然找到了。
所以解决方法有3个:
1. 修改yarn.lock文件,把upath的版本改成最新版本,再yarn一遍。
2. 删掉yarn.lock文件里面关于upath@1.0.4的信息,再yarn一遍。
3. 直接删掉yarn.lock文件,再yarn一遍。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
