Skip to content

解决的最难的项目回答模板

讲一个方应杭的问题

问题:Go 桌面项目打开是空白的

解决方法:debug,搜索,读 issue,找到答案

怎么把这个故事讲得曲折一点?

  1. 用户说页面空白,而且无法复现
  2. 有一天我下定决定解决这个问题,于是远程协助了用户
  3. 我在用户电脑上 debug,发现了报错原因
  4. 但很奇怪,我的电脑不会有这个报错
  5. 于是我上网搜索,终于发现了类似的报错
  6. 顺疼摸瓜,发现有人有一样的报错
  7. 爬楼,发现有个用户留言,是 Windows 注册表的问题
  8. 于是我修改了用户的注册表,发现 bug 消除了
  9. 我总结发现这是因为 Go 的这个 gin 库偷懒用到了注册表
  10. 于是我向这个库作者反馈了
  11. 并自己写博客记录了这个问题

重点:

  1. 要体现你的主观能动性
  2. 要体现你坚持不懈、年年不忘
  3. 要体现你的责任心

讲一个小爝的问题

问题: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

https://github.com/umijs/qiankun/issues/1232

https://github.com/umijs/qiankun/issues/2340