八月问题单总结

Posted by Eleanor Mao on 2017-08-28

最近都没在更博(:з」∠) 但是来总结一下这段时间(我还记得的)发生过的问题

throw errnoException(err, ‘spawn’); Error: spawn EACCES

这是有个项目一直只在公司的win上面开发,虽然是用git管理的,但是最近一次有急需才clone到mac上来继续开发, 然后打包项目的时候就遇到了这个报错。
总之,发现其实是权限的问题,
解决方案
在项目的root路劲下跑一下这个,把权限调整好就可以了

1
chmod -R u+x .

HTTP code 206 Partial Content

是的,那是一天的半夜……,后端的小组长跑来被自动化测试要求发环境,结果发了几次都是挂的,
然后跑来问我是怎么回事。
虽然乍一看静态资源是200了,但是仔细一看其实是206
然后仔细一看资源的Content-Type是1,然后居然有了个Content-Range,而且数字是个很微妙的东西
Content-Range 顺便一提↓

Content-Range 显示的是一个数据片段在整个文件中的位置。

Content-RangeMDN web docs
1
2
3
Content-Range: <unit> <range-start>-<range-end>/<size>
Content-Range: <unit> <range-start>-<range-end>/
Content-Range: <unit> /<size>
而且控制台静态资源报错ERR_CONTENT_LENGTH_MISMATCH 然后在Stack Overflow上搜了一波,好多人说是nginx的权限问题。
不过最后一查,是因为磁盘满了=。=

try-catch

还有一个是因为最外层的try-catch把error都catch住了,导致报错没有被发现,造成了一个线上bug
不过我还蛮佩服我自己的,因为这么写已经大半年了,这个缘故的bug还是第一次……原来我都一直没有写出过bug呜呜呜呜
总之来说是这样的,在外层渲染dom的时候用了这样一段代码

1
2
3
try {
ReactDOM.render(<Foo />, document.querySelector('.root'))
}catch(e){}
结果我在Foo这个类里面调用了一个某引入组件没有的方法,这个error就被catch……我还找了好久为啥都不报错=L=
不过小钻风说把source里面的Pause on exceptions打开就可以抓住这种奇奇怪怪的bug了

微信里的transitionEnd事件

在微信里面调用了transitionEnd事件,但是ios8里面并没有被触发。
最后谷歌之后,发现说是因为只有transition-property是all的时候才能一定出发transitionEnd事件……
吐血
我确实transition-property写的是opacity,为了兼容只能忍辱负重了……抹眼泪

微信定位

这又是一个神坑 =L=
产品发现部分手机微信定位会蜜汁失败,然后跑来找我们,不过并没有说是什么环境,只有个小视频……而且小视频最后还被删掉了(吐血)
结果最后又变成在盲找bug
先说我们的流程,就是先由后端获取定位,如果500的话,再调用JS-SDK定位,如果再没有位置或失败的话就告诉用户定位失败了。
已知的可能定位失败就是安卓如果在公众号内没有停留超过5s的话就会定位不到,因为微信定位5s推送一次,还有就是关掉或打开定位不会马上定位失败/成功,必须经过一段时间(目测是有缓存)
然后我们架构师就表示怎么可能定不到位……非要叫我们搞定,心塞的要死😑最后是能一种种试过去
经过各种试验,可以确定ios关了定位肯定就定不到了,安卓开了定位也有可能订不到,但是关了调用navigator.geolocation还能定到,完了这个定位看网络情况可能要好久才能定位到
过程略,总之最后就是决定改成后端定位返回附近地址和最近收货地址,然后如果没有附近地址就先JS-SDK定位,如果失败再调用navigator.geolocation,如果也失败的话再使用收货地址,如果再没有再提示没有。