umijs / dumi

📖 Static Site Generator for component library development
https://d.umijs.org
MIT License
3.57k stars 1.18k forks source link

dumi本身用了react-router5,组件内部管用了react-router6,5和6把useHistory改成了useNavigator,在运行dumi的时候总是报包找不到,按道理,代码应该查找最近的node_modules #994

Closed sweetehs closed 2 years ago

sweetehs commented 2 years ago

Question

dumi本身用了react-router5,组件内部管用了react-router6,5和6把useHistory改成了useNavigator,在运行dumi的时候总是报包找不到,按道理,代码应该查找最近的node_modules

Sample Code

sweetehs commented 2 years ago

求教,这个要怎么处理?

idaibin commented 2 years ago

请教,我也遇到了一样的问题,有没有临时可以解决的方案呢

sweetehs commented 2 years ago

请教,我也遇到了一样的问题,有没有临时可以解决的方案呢

目前我降级了版本

PeachScript commented 2 years ago

应该只能降级版本,react-router 版本做了强管控,计划在下个大版本升级到 react-router@6

不过组件最好保留原子性,和 router 解耦,由实际项目来决定 router 的实现

susakin commented 2 years ago

组件时依赖react-router 使用useNavigate 会报错

RickieWoo commented 1 year ago

怎么可以临时绕过这个问题呢?

mortalYoung commented 1 year ago

我有一个比较 hack 的解法是:

  1. 在组件库里通过 npm alias 安装,比如吧 react-router6 alias 成 react-router-6 安装
  2. 然后在组件库里开发的时候通过 import xxx from "react-router-6" 引用
  3. 然后写一个插件,在build 之后把编译后的文件里的 react-router-6 改写成 react-router,把 package 里的也做一个修改