解决的最难的项目回答模板
讲一个方应杭的问题
问题:Go 桌面项目打开是空白的
解决方法:debug,搜索,读 issue,找到答案
怎么把这个故事讲得曲折一点?
- 用户说页面空白,而且无法复现
- 有一天我下定决定解决这个问题,于是远程协助了用户
- 我在用户电脑上 debug,发现了报错原因
- 但很奇怪,我的电脑不会有这个报错
- 于是我上网搜索,终于发现了类似的报错
- 顺疼摸瓜,发现有人有一样的报错
- 爬楼,发现有个用户留言,是 Windows 注册表的问题
- 于是我修改了用户的注册表,发现 bug 消除了
- 我总结发现这是因为 Go 的这个 gin 库偷懒用到了注册表
- 于是我向这个库作者反馈了
- 并自己写博客记录了这个问题
重点:
- 要体现你的主观能动性
- 要体现你坚持不懈、年年不忘
- 要体现你的责任心
讲一个小爝的问题
问题:html2canvas 文字向下偏移兼容方法
海报问题,ios15以上有机型有适配问题,文字向下偏移
最开始以为是字体问题,但发现不是,后来调试各种CSS,发现解决不了
最后 debug 了下 html2canvas 的源码,看了下它内部绘制文字的逻辑
发现它canvas绘制文字的 baseline 的值有兼容性问题
于是我从写了绘制文字基线的方法
原理很简单,弄个空 div,先插入一个 span,给赋值绘制的字号、字体,再插入一个1x1的图片,设置display block,然后通过 offsetTop 的差值计算基线
简单来说,就是不用它提供的方法,自己重写计算文字基线解决
我看网上还有其他的解决方案,比如后端输出,用另外的库解决,或者是换版本(1.0.0是正常的)
然后写博客记录了这个问题的解决方案
PS:这个问题我也遇到过,因为找了很久没找到解决方案,后来把文字做成了图片,后来看到小爝的回答才发现是库的问题,但是这个库已经没有人修复了,但索性有人 fork 了这个库并修复了bug
如果是我的话,组件库、2.0切换到3.0的时候、qiankun bug
我自己的例子
2.0切换到3.0的时候
问题:品牌升级,从原有的 2.0 升级到 3.0,保证 2.0 和 3.0 能同时在线且在 3.0 登录后,2.0 保持登录状态,3.0 登出后,2.0 也登出。并且还有个资讯学堂应用,也希望能通过3.0做登录
技术难点:2.0 是基于Node的模板渲染,而 3.0 是基于 React 的单页面渲染,资讯学堂是另一个 React 项目,三个项目独立开发不在一个项目中
我们组长提出的解决方案是,做一个登录登出应用,凡是要登录登出的,就跳转到这个应用中,完成后再回跳到原来入口处
但是时间紧迫,再做一个这样的应用,考虑到UI 要和3.0一致,还需要重新测试,而且这样一来,可变量就更多,上线风险更大了
所以我提出用url参数++localStorage+Node模板存变量的方式解决,例如说
3.0登录,调用完登录接口后,判读是否从2.0入口来的,如果是,则返回到2.0,并把信息存到localStorage中;
3.0登出,调用完登出接口后,判断本地存储中是否有登录过2.0,如果有,则跳到2.0,2.0应用判断如果是3.0来的登出,则做登出,再跳会3.0
资讯学堂也差不多是这样
总之,这里需要判断多个应用之间路由的切换以及后退是否失效问题
qiankun bug
问题:qiankun 关于子应用 js chunk 按需加载,出现 Loading chunk failed
解决方法:debug,搜索,读 issue,找到答案
- 在我本地上运行都是正常的,发版之后,有运营同学说有时候点击子应用后会白屏,但刷新一下就好了
- 因为那个时候忙其他项目,而这个项目是内部后台项目,而且刷新一下就能解决,所以没有及时解决
- 后来忙完手头上的事情,就决定把这个问题解决掉(中途也有多人反馈有这个问题)
- 我发现在 dev 环境和本地环境上是正常的,但是发布到测试和生产环境就有问题
- 怀疑是线上一些配置的问题,于是在测试环境上debug上查找问题,并且我上网搜索,在 github 上找到类似的报错
- 看别人的问题,有说是 qiankun 的版本问题;也有说是重定向资源没加载完就切换影响当前环境的;还有说路由模式问题以及说配置问题的
- 于是我一一尝试,定位到重定向资源没加载的问题,我在子应用入口处,即页面加载时 setTimeout 了一下,解决了这个问题
- 然后写博客记录了这个问题的解决方案
https://github.com/umijs/qiankun/issues?q=ChunkLoadError
https://github.com/umijs/qiankun/issues/1929
https://github.com/umijs/qiankun/issues/1953