You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tauri环境下TypeScript中File的arrayBuffer方法报错,如何解决?

解决方案

问题分析

你遇到的错误源于Tauri环境下的File对象未实现标准浏览器的arrayBuffer()方法,同时原代码未正确处理异步函数返回的Promise,导致出现未处理的Promise拒绝错误。

修复步骤

1. 替换arrayBuffer()为兼容的FileReader实现

改用FileReader读取文件,这是适配非标准环境的通用方案:

const fileToUint8Array = (file: File): Promise<Uint8Array> => {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onload = () => {
      resolve(new Uint8Array(reader.result as ArrayBuffer));
    };
    reader.onerror = () => reject(reader.error);
    reader.readAsArrayBuffer(file);
  });
};

2. 正确处理异步函数的Promise

原代码直接打印异步函数返回的Promise对象且未捕获错误,需用await结合try/catch处理:

// 在React组件的异步逻辑中调用(比如useEffect或事件处理函数)
const processFile = async (file: File) => {
  try {
    const array = await fileToUint8Array(file);
    console.log(array);
  } catch (error) {
    console.error('文件转换失败:', error);
  }
};

原因说明

Tauri的文件对象并非完全遵循浏览器标准API,缺失arrayBuffer()方法的实现,这和你推测的TensorFlow.js相关兼容问题本质一致——都是非标准环境下Blob/File API的支持差异。FileReader作为传统文件读取API,兼容性更强,能规避这类环境差异问题。

内容的提问来源于stack exchange,提问作者musako

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:07:36