这个 bug 的发现过程在这里: https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=231510329&docid=99f032bff8b2a6ccb37ffd4414aa5575
调查结果表明从 excel 复制值出来时,可能会带有 \u2028 和 \u2029,这两个分别作为行分隔符和段落分隔符存在。
考虑微信可能用了 jsonp 的方式去实现了跨域请求,或者其他什么方式,使得即使在接口 response header 中声明 content-type 为 'application/json' 后仍然需要小程序框架这边手动 JSON.parse 返回的字符串。然后导致了上述的错误。
查找了一些文档后,在这里向微信的同学提供一些文档方便理解问题:
https://stackoverflow.com/questions/2965293/javascript-parse-error-on-u2028-unicode-character
https://github.com/expressjs/express/issues/1132
https://github.com/rails/rails/issues/10320
再次恳请微信的同学看一下这个问题,然后给出答复。
你好,问题没有复现,能否提供复现问题的简单 demo 示例和数据示例
你好,已收到反馈,正在跟进
最小复现步骤:编写一个后端接口,返回 JSON 格式数据(Content-Type: application/json; charset=utf-8),其中某字段的 value 包含特殊 '\u2028' (unicode line seperator)
然后小程序使用 wx.request 请求该接口,如果请求成功,那么小程序会立即崩溃,并打出错误 Unexpected EOF Stack: [native code]
真的打算无视我么?至少回复「收到反馈,开始调查」也 OK 啊!