错题本:“RangePicker”不能用作 JSX 组件

614 阅读1分钟

2022 年 3 月 29 日,React 18 正式版发布,带来很多新的能力,React 终于不再支持 IE(前端界的努力,让 IE 去死)。新的版本发布,React 的整体生态圈也会同步更新支持,也就导致 npm 包的依赖不可避免的产生一些混乱。记录下今天小伙伴抛出来的问题。

image.png

产生原因:

@types/react-dom 的 package.json 中,dependencies 设置了@types/react 版本为 '*',但是现在最新版本已经是 18. 虽然在 package.json 中指定了 ^17.0.44,但是 @types/react-dom 还是会安装自己的依赖包。

image.png

解决办法

  • 对于一些hooks库,组件库,本身的依赖,已经在项目中存在了,所以用peerDependencies声明。
  • 在开发的过程中,很可能用到不同版本的同一依赖,比如说项目引入了 A 版本的依赖,组件库引入了 B 版本的依赖。那么这种情况如何处理呢。在 package.json 文档中提供了一个resolutions配置项可以解决这个问题,在 resolutions 中锁定同一的引入版本,这样就不会造成如上存在多个版本的项目依赖而引发的问题。

通过 resolutions 指定版本

在package.json中添加:

"resolutions": { "@types/react": "17.0.44" },

tips: 我用的是 yarn ,如果您使用的是npm 的话,您还需要在 package.json 的 script 中添加如下 preinstall,通过使用npm-force-resolutions包来根据 resolutions 进行版本限定。