今天收到一个项目,包管理工具用的是yarn,有yarn.lock,我用npm install,结果发现antd的card组件的tabList不显示。
问了ai发现是antd v5不支持tabList,建议写Tabs组件。于是我查看了package.json,发现版本是4.7.2,在git里查看修改过的文件,发现yarn.lock和package.lock.json都进行了修改,lock文件中的antd版本是5.0.0.
原因如下: 1. package.json中的版本是^4.7.2,这个^是默认规则允许版本号上升。(自动允许升级到 不超过 5.0.0 的任何次版本或补丁版本。)2. 我使用的是npm来install依赖包,npm会自动升级依赖。
解决办法: 1. 去掉^,锁死版本号,rm -rf node_modules package-lock.json npm install。
- 使用yarn install。它会严格按照yarn.lock版本安装。
我选择的方案是使用yarn重新安装包。
前置做法是删除之前装的node_modules和package.lock文件,因为安装会优先按照lock文件的版本。(当然这是npm会,yarn就是按照yarn的锁文件)
介于原项目就有两个lock文件并且有内容,所以我并不删除,只进行回滚恢复。
最后重新运行yarn install。