一、问题描述
- 移动端的一个导出功能,不同的浏览器竟然后台会报数组越界。
二、问题暴露过程
- 我们有一个报表导出图片的功能,在昨天晚上的时候,老板秘书反映导出有问题,我们测试半天,发现电脑端没问题,我的 iPhone6 手机浏览器也没问题,由于用户一般都是直接在微信中使用该功能,然后直接导出的图片发送给领导看的,所以我们就又专门测了一下微信。
这一测,问题就出来了,在 ios 版的微信中,导出在前端是没有任何问题的,各种正常……然后,看后台日志,竟然报了“数组越界”。而且定位的行是不存在越界这种问题的。 - 于是,不甘心的又做了多种尝试,但依旧如此,甚至有部分手机导出不光后台会报错,前端也是不能正常使用的。
三、尝试修复
1.回忆最近更新的内容
- 一看到这样的测试结果,有点懵。。于是开始回忆最近都是修改了什么内容。好在代码完全是我一个人修改的,改的内容时间间隔时间也不是很久,所以基本都比较清楚。
- 由于最近正好改过数组类似的东西,所以觉得可能是数值计算有误,于是专门手动计算了好几遍,由于是比较复杂的报表绘制图片,里面的各项数值计算搞的头都大了。
- 我根据之前的修改,一点点的重新写新的数值进去,然而——无济于事。
2.尝试
- 一怒之下,我把代码还原到上个版本,然后——竟然也是报错的,估计是以前没有测出来的问题
- 然后我把代码还原到最开始的版本,这下我彻底绝望了,竟然也是会报错的。
四、测试其他的浏览器
- 搞了半天都没有什么收获,我就想,会不会只有微信才会有这种问题,于是我开始下载其他的浏览器。什么谷歌、UC 等等。
- 最终测试的结论,微信和 UC 是会报错的,其他的不会。
- 这服务端的东西,跟浏览器有什么关系呢?
五、先猜一种可能
- 仔细想一下,前后端能扯上关系的就是前段请求,后端响应,那问题估计在请求的过程中。
- 而请求返回的是一个输出流,那就可能是这个流的问题。接下来应该要从流着手去研究。
问题还没有解决,我记录完这些还要继续去奋斗。
后续……
- 现在是 10 月 21 号早上,我进行了另外的尝试,就是文件不写入流,直接保存在服务器本地。结果,都是没有报错的。
- 那么,最大的可能就是在写入流的时候出错了。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于