依赖更新导致项目运行报错

一、问题出现

安装依赖如果使用npm或者yarn命令都会先根据package.lock.json文件或者yarn.lock.json文件安装。如果没有这两个文件,则会根据package.json文件的依赖版本安装最新的版本。 这也是为什么一个依赖在package.json里面是^8.1.3, 但是在执行npm install的时候,在保证大的版本号不变的情况下下载的可能是8.1.5版本的原因。依赖安装升级也是有一定的规则的。

二、升级规则

根据package.json 内依赖的版本号进行升级

1. 版本号的含义

        npm 模块 完整的版本号为【主版本 . 次要版本 . 补丁版本】

        如果模块有变动,通常按照以下规则,更新版本号

        1.1.修复 bug,需要更新补丁版本

        1.2.新增功能,但是向下兼容,需要更新次要版本

        1.3.大变动,向下不兼容,需要更新主版本

2. 版本范围

        2.1指定版本

        比如 1.2.2,安装时只安装指定版本(遵循 “主版本.次要版本.补丁版本” 的格式规定)

        2.2波浪号(tilde)+ 指定版本

        比如 ~1.2.2,表示安装 1.2.x 的最新版本(不低于1.2.2),但是不安装 1.3.x,也 就是说,安装时 不改变 大版本号 和 次要版本号

        2.3插入号(caret)+ 指定版本

        比如 ˆ1.2.2,表示安装 1.x.x 的最新版本(不低于1.2.2),但是不安装 2.x.x,也 就是说,安装时不改变大版本号

        2.4 latest

        安装最新版本

三、解决方案

        这个时候package.json.lock或者yarn.lock.json就起作用了,在node_modules,package.json发生改变时会生成该文件,将会记录下载的到底是模块的哪一个包,然后如果代码移植后不能正常运行,只需要找到该文件中记录的包的具体的版本进行安装就可以解决包的版本带来的问题。

        package.json.lockyarn.lock.json是分别生成的,并无关系,比如存在package.json.lock,不存在yarn.lock.json。使用了yarn命令会根据package.json新生成一个yarn.lock.json,版本和package.json.lock的会存在差异。

四、问题验证

测试一:拉了一个项目 带有package-lock.json  

测试结果:安装的版本都是锁定精确的

测试二:删除package-lock.json和yarn.json后安装依赖

测试结果:提示一些更新,原有的某些方法可能会有问题报错,安装的依赖按照规则安装的是大版本下的最新版本

测试三:安装指定版本

有时候我们会选定版本安装依赖,对应的package.json里面就没有^或者~,这时候即使没有lock版本锁定文件,安装时也只会安装当前版本,不会自己升级

测试四:没有yarn.lock.json 使用yarn命令安装

测试结果:yarn.lock.json和package.lock.json没有关联,也会进行一次新的版本锁定

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuwenjie_

感谢打赏,问题留言~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值