收藏
回答

请使用标准的 request 实现




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

最后一次编辑于  2017-12-18
回答关注问题邀请回答
收藏

10 个回答

  • Malash
    Malash
    2018-11-13

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


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

    2018-11-13
    有用
    回复
  • paddy
    paddy
    2018-05-04

    你好。。这个问题解决了么。。这边也出现了这个问题


    2018-05-04
    有用
    回复 1
    • ...
      ...
      2018-05-31

      你解决了吗?我目前也遇到这个问题了

      2018-05-31
      回复
  • zouyang
    zouyang
    2018-01-15

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

    2018-01-15
    有用
    回复
  • 橙子
    橙子
    2018-01-04

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

    2018-01-04
    有用
    回复
  • 2017-12-20

    找到了几个可能有助于问题理解的资料: 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 字符串,谢谢。

    2017-12-20
    有用
    回复
  • 2017-12-20

    没人么?

    2017-12-20
    有用
    回复
  • 2017-12-19

    这个问题有记录和调查吗?

    2017-12-19
    有用
    回复
  • 2017-12-18


    如果 console 里出现了神秘的圆点,说明复制对了。就是这个神奇的换行符:http://www.fileformat.info/info/unicode/char/2028/index.htm 导致了 wx.request 莫名其妙的崩溃。


    请复现一下,如果有任何进展都请在这个帖子下面沟通。我会持续关注这个问题的。

    2017-12-18
    有用
    回复
  • 2017-12-18

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


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

    2017-12-18
    有用
    回复
  • 2017-12-18

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

    2017-12-18
    有用
    回复 1
    • ...
      ...
      2018-05-31

      你好想请问您是如何解决这个问题的,是前端处理过滤掉,还是后端直接删除

      2018-05-31
      回复
登录 后发表内容