最近项目突然出现bug,但是这个模块的代码已经几个月没动了。经过排查发现本地正常生产环境异常,得出不是代码问题导致,最后发现是依赖库版本更新后不向下兼容的原因。经过查阅资料发现是由于依赖库版本范围会根据我们的配置而做出修改导致的问题!
从资料中我们可以看出
1.'~'如果指定了次要版本,则允许补丁程序级别的更改。如果不指定次要版本,则允许进行次要级别的更改
~1.2.3 表示 大于等于 1.2.3 小于 1.3.0
~1.2 表示 大于等于 1.2.0 小于 1.3.0
~1 表示 大于等于 1.0.0 小于 2.0.0
~0.2.3 表示 大于等于 0.2.3 小于 0.3.0
~0.2 表示 大于等于 0.2.0 小于 0.3.0
~0 表示 大于等于 0.0.0 小于 1.0.0
2.'^'允许所做的更改不会修改[主要版本号, 次要版本号, 补丁版本号]
元组中最左边的非零的版本
^1.2.3 表示 大于等于 1.2.3 小于 2.0.0-0
^0.2.3 表示 大于等于 0.2.3 小于 0.3.0-0
^0.0.3 表示 大于等于 0.0.3 小于 0.0.4-0
3.去掉范围符号
1.2.3 表示 固定为 1.2.3
当前的package.json
修改后的package.json
所以我们固定这个依赖库的版本号,去掉'^'之后提交代码,生产环境打包后就解决了这个问题