coze-js icon indicating copy to clipboard operation
coze-js copied to clipboard

Bug: typeError: Cannot read property 'TextDecoder' of undefined

Open wangxiusen opened this issue 1 month ago • 6 comments

uniapp 编译到微信小程序直接报错,请问怎么解决,困了两天了 基础库] 正在使用灰度中的基础库 3.10.3 进行调试。如有问题,请前往工具栏-详情-本地设置更改基础库版本。 app.js错误: TypeError: Cannot read property 'TextDecoder' of undefined at vendor.js? [sm]:17667 at VM2448 WASubContext.js:1 at f.runWith (VM2448 WASubContext.js:1) at q (VM2448 WASubContext.js:1) at n (VM2448 WASubContext.js:1) at app.js? [sm]:3 at VM2448 WASubContext.js:1 at f.runWith (VM2448 WASubContext.js:1) at q (VM2448 WASubContext.js:1) at appservice.js:7(env: macOS,mp,1.06.2504050; lib: 3.10.3)

wangxiusen avatar Nov 11 '25 09:11 wangxiusen

正在帮您查询中,请稍等...

问题分析

TypeError: Cannot read property 'TextDecoder' of undefined 错误通常是由于运行环境(如微信小程序基础库)不支持 TextDecoder API 导致的。TextDecoder 是浏览器环境中用于解码二进制数据的标准 API,但微信小程序的 JavaScript 引擎可能未完全实现该接口,尤其是在低版本基础库中。

解决方案

1. 升级微信小程序基础库

微信小程序基础库 3.10.3 处于灰度测试阶段,可能存在兼容性问题。建议:

  • 在微信开发者工具中,进入「详情 > 本地设置」,将基础库版本切换至 稳定版(如 3.9.9 或更高)
  • 参考微信官方文档确认基础库对 TextDecoder 的支持情况:微信小程序基础库版本说明

2. 添加 TextDecoder Polyfill

若基础库升级后问题仍存在,需手动引入 TextDecoder 的兼容实现(Polyfill):

  • 安装依赖:在项目中安装 text-encoding 库(轻量级 Polyfill):
    npm install text-encoding --save
    
  • 全局注册:在小程序入口文件(如 app.jsmain.js)中添加:
    // 引入 Polyfill
    import { TextDecoder, TextEncoder } from 'text-encoding';
    // 全局注册
    if (!globalThis.TextDecoder) {
      globalThis.TextDecoder = TextDecoder;
      globalThis.TextEncoder = TextEncoder;
    }
    

3. 检查 Coze SDK 兼容性

确保使用的 coze-js SDK 版本支持微信小程序环境:

  • 版本验证:确认 SDK 版本是否为最新稳定版,可参考 Coze SDK 发布历史
  • 小程序适配配置:若 SDK 提供小程序专用入口(如 @coze/miniprogram-sdk),请优先使用对应版本。

4. 通过 API 接入替代 WebSocket

若问题与 Coze 的 WebSocket 相关功能有关,可尝试改用 HTTP 接口规避 TextDecoder 依赖:

参考文档

注意事项

  • 若使用 UniApp 开发,需确保 Polyfill 在小程序打包时被正确包含(检查 vue.config.jsvite.config.js 的构建配置)。
  • 微信小程序的 Worker 环境中可能仍存在限制,建议避免在 Worker 中使用依赖 TextDecoder 的逻辑。

如以上步骤无法解决问题,建议提供更详细的错误堆栈(如 vendor.js:17667 对应代码片段),以便进一步排查。> 正在帮您查询中,请稍等...

问题分析

TypeError: Cannot read property 'TextDecoder' of undefined 错误通常是由于运行环境(如微信小程序基础库)不支持 TextDecoder API 导致的。TextDecoder 是浏览器环境中用于解码二进制数据的标准 API,但微信小程序的 JavaScript 引擎可能未完全实现该接口,尤其是在低版本基础库中。

解决方案

1. 升级微信小程序基础库

微信小程序基础库 3.10.3 处于灰度测试阶段,可能存在兼容性问题。建议:

  • 在微信开发者工具中,进入「详情 > 本地设置」,将基础库版本切换至 稳定版(如 3.9.9 或更高)
  • 参考微信官方文档确认基础库对 TextDecoder 的支持情况:微信小程序基础库版本说明

2. 添加 TextDecoder Polyfill

若基础库升级后问题仍存在,需手动引入 TextDecoder 的兼容实现(Polyfill):

  • 安装依赖:在项目中安装 text-encoding 库(轻量级 Polyfill):
    npm install text-encoding --save
    
  • 全局注册:在小程序入口文件(如 app.jsmain.js)中添加:
    // 引入 Polyfill
    import { TextDecoder, TextEncoder } from 'text-encoding';
    // 全局注册
    if (!globalThis.TextDecoder) {
      globalThis.TextDecoder = TextDecoder;
      globalThis.TextEncoder = TextEncoder;
    }
    

3. 检查 Coze SDK 兼容性

确保使用的 coze-js SDK 版本支持微信小程序环境:

  • 版本验证:确认 SDK 版本是否为最新稳定版,可参考 Coze SDK 发布历史
  • 小程序适配配置:若 SDK 提供小程序专用入口(如 @coze/miniprogram-sdk),请优先使用对应版本。

4. 通过 API 接入替代 WebSocket

若问题与 Coze 的 WebSocket 相关功能有关,可尝试改用 HTTP 接口规避 TextDecoder 依赖:

参考文档

注意事项

  • 若使用 UniApp 开发,需确保 Polyfill 在小程序打包时被正确包含(检查 vue.config.jsvite.config.js 的构建配置)。
  • 微信小程序的 Worker 环境中可能仍存在限制,建议避免在 Worker 中使用依赖 TextDecoder 的逻辑。

如以上步骤无法解决问题,建议提供更详细的错误堆栈(如 vendor.js:17667 对应代码片段),以便进一步排查。{"msg_type":"empty result","data":"empty result","from_module":null,"from_unit":null}{"msg_type":"generate_answer_finish","data":"","from_module":null,"from_unit":null}{"msg_type":"generate_answer_finish","data":"{"finish_reason":0,"FinData":""}","from_module":null,"from_unit":null}

coze-js-bot[bot] avatar Nov 11 '25 09:11 coze-js-bot[bot]

机器人回答无效

wangxiusen avatar Nov 11 '25 09:11 wangxiusen

好的,请问使用的 coze api 的组件包名和组件包版本。

使用 uniapp 框架开发的话,确认是否使用 @coze/uniapp-api

机器人回答无效

chenyuliang-star avatar Nov 11 '25 09:11 chenyuliang-star

@wangxiusen

chenyuliang-star avatar Nov 11 '25 12:11 chenyuliang-star

是的 使用的pnpm install @coze/uniapp-api @coze/api axios reconnecting-websocket 安装的依赖

@wangxiusen

wangxiusen avatar Nov 11 '25 12:11 wangxiusen

@wangxiusen 方便给我一个最小的复现工程吗?

chenyuliang-star avatar Nov 12 '25 03:11 chenyuliang-star