微信小程序--接入SSE在微信开发者工具中对话框正常展示,但在真机上无法展示

198 阅读1分钟

问题分析:

       使用 wx.request({url“https://xx”,responseType: "arraybuffer",enableChunked: true}响应回来的数据格式是arraybuffer,需要使用TextDecoder将arraybuffer转化为string。

      在微信小程序中,TextDecoder 是 JavaScript 中的一个全局对象,用于将字节数据解码为字符串。然而,微信小程序的 JavaScript 运行环境并不完全等同于浏览器环境,因此某些浏览器中的全局对象(如 TextDecoder)在小程序中可能不可用。

原代码:

直接使用TextDecoder进行转换

真机报错:

解决方案:

不能直接TextDecoder 全局对象,而是使用 text-encoding 这个库实现

实现步骤:

1.安装 text-encoding 库
npm install text-encoding

2.在小程序代码中引入
import { TextDecoder } from 'text-encoding';

3.使用 TextDecoder
const decoder = new TextDecoder('utf-8');
const str = decoder.decode(arrayBuffer);

真机效果: