背景
今天还在高高兴兴的敲代码,已经有进安装的依赖包,所有使用使用了npm i的命令更新了一下npm包
结果在提交代码的时候就报错了。
侦探之路
没更新依赖包之前明明是没报错,一更新依赖包后,就报错了。
跟之前的旧分支的package.json对比,也没有变化啊。
于是去看了下报错文件,拿报错文件跟之前没有更新前的文件对比了一下,发现listr2的版本号更新了。
我发现我的package.json文件没有listr2,就觉得这个包应该是其他包的间接依赖包,全局搜索后,发现是lint-staged里面有依赖包listr2
还是老办法,拿没更新前的文件进行对比。
发现lint-staged的版本被更新了。
我去官网看了下lint-staged新版本的差异,发现对应的包被更新。
解决方法
方法1
由于我现在的node.js版本是14,升级到18后就不会报错了。
方法2
由于版本号是 "lint-staged": "^13.2.3",其他使用了^,我问ChatGPT。
^会取最新的次版本和修订版本,所有我的解决方案就是固定版本。
直接使用"lint-staged": "13.2.3"
换了固定版本再更新就没有问题了。
总结
现在很多依赖包都用了^, 一些依赖包有可能会大批量更新其他依赖包的版本,导致现在的环境编译不了而报错。解决方案就是,要么升级当前编译的环境,要么保持之前的版本。考虑老项目编译环境的版本兼容问题,还是建议用旧版本就行,能不升级就不升级。一升级可能就不止一个报错需要解决了。