先回顾一下改这个bug的整个流程:
- 我们升级PDF依赖的版本以后,其中一个chart无法显示。
- 研究发现是一个叫puppeteer的包有bug,这个包不是我们直接依赖的包,是PDF工具所依赖的包。
- 问题在于PDF在下一个大版本才解决了这个问题,而我们由于一些限制不能升级到下一个大版本;
- 这时候就想起来overrides这个功能。(package.json | npm Docs)
- 大概看了一下puppeteer两个版本,好像它是前向兼容的,我们就做了一个尝试,用overrides直接升级次一级的依赖的版本。
下面是遇到的问题:
- 升级完后,找不到chrome,而且在windows下工作正常,但是在Ubuntu下puppeteer会遇到没有权限的问题,这个通过官方文档解决了。
- Mapbox在Ubuntu下无法正常工作。这个用遍网上的办法也无法解决。最后发现是版本冲突问题。
- 还有一些其他的冲突问题。
最后总结一下,如果下大力气去找几个包都能工作的折衷的版本,兴许也是可以找到的。但是这个付出的精力很不划算,如果其中有一个包有安全问题等等的话,所有的努力就都白费了。而且这并不是我们第一次尝试使用overrides,上一次当vm2 (https://github.com/patriksimek/vm2)遇到安全问题时,我们也尝试过用overrides直接升级它的版本来避开安全问题,结果也同样是遇到了兼容性问题而放弃。经历过这样两次的故事之后,我们应该是不会再考虑这个overrides了。也真是不知道它在什么场合下可以发挥作用。