zoukankan      html  css  js  c++  java
  • 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 一遍。
  • 相关阅读:
    参数探测(Parameter Sniffing)与影响计划重用的SET选项
    The workbook can not be opened
    参数Sniffing问题
    Unable to connect SQL Server
    正则|和[]的区别
    form的target捕捉不到动态写入name的iframe
    windows下git bash乱码问题
    ie6,7下textarea等上方空白
    根据字数截取字符串,不能截断url
    浏览器hack
  • 原文地址:https://www.cnblogs.com/yangzhou33/p/11494819.html
Copyright © 2011-2022 走看看