47 - 《依赖版本错乱怎么办》

发布于 2022年1月26日

今天同事反馈的一个案例,记录下。

一个很老的项目,技术栈是 roadhog@1 和 dva@2.5.0-beta.2。遇到的问题是 history 找错了版本,期望用 4,但却用了 5。

业务同学很认真,遇到问题后排查、整理、并写了 2000 字的总结长文,但我翻了下,发现文中虽然有很多猜测、解法和建议,但并没有找到问题根源,解法是 WorkAround,并且建议是 XY Problem。简单解释 XY Problem,就是出现了问题 X,你理解后觉得是问题 Y,然后大家一起努力解决了问题 Y,却发现不是问题 X 的解或不是最优解。

那遇到了具体怎么排查呢?

1、确定谁依赖了 history 并引发问题,设答案为 X
2、确认 X 对于 history 的依赖关系是否正确
3、确认 X 和 history 的 node_modules 上下级结构是否正确
4、确认是否 webpack resolve 规则的锅

如果 2 有问题,那是依赖包的锅。举几个错误的用法,首先 X 都 import 了 history,然后,

a、X 的 package.json 中没在 dependencies 或 peerDependencies 里声明 history
b、X 的 package.json 中通过 peerDependencies 里声明 history,但使用 X 的 Y 没有在 pack

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。