描述
在monorepo项目中packages中创建一个公共UI库(ui-lib)在react-ts-app中使用的时候会有如下提示
抓头时间😩
在一顿网上冲浪查询之后,说是存在多个React实例
链接 https://juejin.cn/post/7121178707490209806
针对该问题问了下GPT给我的回答:嘤嘤嘤 😭😭😭
一顿操作之后问题还是没有解决!!!😭😭😭
文件目录
补充一下项目使用的是webpack打包的,react版本 18.2.0。UI-lib React版本 18.3.1
有没有什么解决方法啊救救孩子 项目GIT地址:https://gitee.com/yyytxxx/monorepo/tree/test/
补充 0801-1839:
PS:从代码库拉的代码如果直接在根目录下pnpm i 的话会导致 react-ts-app 中的react版本更到最新的即与ui-lib的版本一致(这种情况不会有问题)。只有他们的React的版本有差异才会出现上面多个实例的错误
# 在react-ts-app中执行,确保存在差异
pnpm remove react react-dom @types/react @types/react-dom
pnpm add react@18.2.0 react-dom@18.2.0
pnpm add -D @types/react@18.2.46 @types/react-dom@18.2.18
UI库不能把框架作为自己的dependencies, 因为这样构建的时候会把框架打到库的产物里面,业务项目本身自己会安装框架,使用UI库的时候可能存在版本不一致,或者上述的两个实例等问题一般都是采用将
框架作为库的devDependencies以满足开发环境使用peerDependencies给库的使用端进行依赖版本约束和提示目的是实现只在顶层项目安装
框架依赖,UI库构建的时候不将框架打包到产物中最后还需要在
UI库的构建配置中,将框架排除掉,用vite举例: