缺陷Bug有哪位大神帮忙看看否?
Devtools PC端Remote Debug下chunked模式解析错误代码业务场景 基于chunked模式与后台通信,实现数据交换。 同一套代码,测试运行正常的运行场景: 1 在DevTool的开发环境下,运行正常。 2 在Remote Debug模式下,IOS端测试运行正常。 3 在体验版本下,IOS端运行正常 运行失败的场景: 1 在体验版下,PC端运行出错 2 在Remote Debug模式下,PC端运行出错 错误信息: 文字描述:servicewechat.com/wx…c939e3/0/index.js:3 Uncaught ReferenceError: global is not defined [图片] 由于无法直接看到index.js下的代码,所以无从定位问题,只能从现象看做推理了..... 分析过程以及初步得到的信息: 在Debug模式下,抓取IOS的请求如下: [图片] [图片] 在PC端的Debug模式下抓取同一个请求如下: [图片] [图片] 其中两者的差异: 1 响应中缺少了Transfer-Encoding:chunked的设置。(经过分析,Http2本身就不会返回上述信息) 2 二者使用http协议分别为1.1 和2 初步推测的可能: 分析1: 表面原因: The provided value 'stream' is not a valid enum value of type XWebXMLHttpRequestResponseType. 基于上述推测,在http2模式下,content-type: text/event-stream的不支持导致了global is not defined的error 分析2: 在目前nginx中的关键配置如下: server { listen 443 ssl http2; listen [::]:443 ssl http2; proxy_buffering off; chunked_transfer_encoding on; location /wx/api/v1/ { proxy_http_version 1.1; proxy_pass http://127.0.0.1:8090/wx/api/v1/; proxy_set_header Host $proxy_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_ssl_session_reuse off; proxy_ssl_server_name on; proxy_ssl_name $proxy_host; proxy_ssl_protocols TLSv1 } 其中开启了http2的支持,同时在proxy_http_version中指定了1.1版本。 按照设置,应该可以兼容http2的请求,并将结果顺利返回的。 分析3: 基于在IOS端,可以正常运行和访问的情况来推测,可以理解有以下两种可能性: 可能1: PC端默认使用http2,但是对于stream/chunked模式不支持,或支持的不完整,导致上述问题。 可能2: Nginx配置可能有问题,但是从已有资料来说,个人理解应该不是(如果说的不准确,欢迎大家拍砖)。 可能的解决方案: 方案1: 在PC端,与IOS端保持步调一致,使用http1.1,且支持完整(这里假定http1.1的stream模式之前就已经支持是完整的,只需做一下协议的降级即可,至少在mobile端是OK的) 方案2: 保持http2不变,修复上述问题(微信的responseType支持text和arraybuffer两种) 求助期望 希望帮忙看看这个问题,是否理解正确,且希望能够帮忙定位和解决一下。
2023-06-06我刚碰到这个问题,在Dev环境下是可以使用的,到真机调试提示不可用。这个TextDecoder/TextEncoder到底是可用,还是不可用?
TextEncoder在真机上提供吗?业务代码中用到了new TextEncoder() Stable 1.06.2301160 (上一个版本) 开发工具和真机上 都提供了 TextEncoder/TextDecoder 能正常使用 Stable 1.06.2303060 (最新版本) 开发工具上提供了 但是真机上这个方法没了 导致代码报错走不下去 请问下稳定版最新版开发工具是有什么变动导致这个方法 new TextEncoder() 丢失了吗
2023-06-02同问,今天碰到同样的错误
PC端真机调试报错error parsing cp ws message?PC端真机调试报错错误,静态页面可以显示,无法请求后台数据 runtime.js?devtools_ignore=true:1 error parsing cp ws message {"type":"handleSetupContext","data":{"register_interface":{"obj_methods":[]},"device_info":{"device_name":"DESKTOP-HU27A2I","device_model":"Windows 11 x64","os":"VERSION_WIN_LAST","wechat_version":"3.9.0","pixel_ratio":1.25,"screen_width":415,"publib":827,"user_agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/6500","displayPublib":"2.26.1 [827]"},"support_compress_algo":1}}
2023-06-02花了3天时间,终于搞定了,解决思路是在服务端进行Base64编码,然后在小程序接收之后,先转bytearray转base64, base64解码为string,在转为bytearray,最后使用TextDecoder的decode方法解码即可。
RequestTask.onChunkReceived接收utf-8编码的中文字符串异常requestTask.onChunkReceived(res => { let decoder = new TextDecoder('utf-8'); let str = decoder.decode(res.data); // 将ArrayBuffer类型数据解码为字符串类型 console.log(str); }) 服务器返回的数据,每个分片都是'123你好',对应utf-8编码格式为b'123\xe4\xbd\xa0\xe5\xa5\xbd',但是在onChunkReceive中得到的ArrayBuffer是: [图片] 96,125不知道是什么值,调试器里显示报文里的值是正确的: [图片]
2023-05-30