遇到了奇怪的渲染错误,页面白屏。查看错误: Unexpected EOF Stack: [native code]。机器上遇到了该错误,然而开发者工具没有这个错误。
最终 debug 出来是因为运营配置的一段文本中,出现了换行符: \u2028,导致了 wx.request 中 parseJSON 的部分执行发生错误。删除这个字符后,请求顺利成功,页面也渲染出来了。
搜索了一下这个错误,大胆的推测微信这边的 wx.request 使用的是被弃用的 jQuery.parseJSON,其中的 jQuery.parseJSON 已经被 JSON.parse 所替代。而 Unexpected EOF 正是 parseJSON 才会抛出的错误。
微信的同学如果对这个神奇的 Bug 感兴趣,可以自己试一下,启一个简单的 http server,然后在一个 request 中返回 ‘\u2028’。然后在小程序中调用一下 wx.request 试试。
_
_
如果你在 chrome 的 console 中,粘贴这个字符可能会展现为一个神奇的 ·
如果 console 里出现了神秘的圆点,说明复制对了。就是这个神奇的换行符:http://www.fileformat.info/info/unicode/char/2028/index.htm 导致了 wx.request 莫名其妙的崩溃。
请复现一下,如果有任何进展都请在这个帖子下面沟通。我会持续关注这个问题的。
找到了几个可能有助于问题理解的资料:https://opensource-experts.blogspot.hk/2017/03/json-stringify-web-javascript-reference.html
https://stackoverflow.com/questions/2965293/javascript-parse-error-on-u2028-unicode-character
https://github.com/expressjs/express/issues/1132
恳请微信的同学关注一下这个问题,至少过滤一下 \u2028 和 \u2029 这两个 unicode 字符串,谢谢。
楼主你好,对于你反馈的问题我查阅资料后进行了整理,重新反馈给微信官方:
https://developers.weixin.qq.com/community/develop/doc/0000eed41dcbc05780a7acc1951000