请使用标准的 request 实现
发布于 5 年前 作者 jjin 19712 次浏览 来自 问答

遇到了奇怪的渲染错误,页面白屏。查看错误: 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 中,粘贴这个字符可能会展现为一个神奇的 ·

10 回复

如果 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 字符串,谢谢。

同样的问题遇到好几次了,麻烦微信的同学尽快处理下,谢谢

据我后来跟进,运营使用了 Pages 进行文本编辑,然后拷贝粘贴到后台,后台又传给小程序,才导致的错误。

浏览器对 JSON.parse 的实现已经不会出现这个错误了。请微信的同学使用标准的写法。

楼主你好,对于你反馈的问题我查阅资料后进行了整理,重新反馈给微信官方:

https://developers.weixin.qq.com/community/develop/doc/0000eed41dcbc05780a7acc1951000

遇到同样的问题,希望微信的同学尽快关注解决一下

看上去并不能直接复制。这个社区的文本好像转义了。总之 ‘\u2028’ 是可以的。

回到顶部