收藏
回答

wx.setStorageSync在纯血鸿蒙系统中异常

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug setStorageSync 鸿蒙客户端 8.0.11 3.9.1

下面的代码,在安卓和iOS系统中都可以正常缓存,但是在鸿蒙Next系统中总是报错:quota reached,看上去鸿蒙系统中1M并非1百万字符

function storeData(data, keyPrefix) {

  const maxSize = 1024 * 1024 - 100;

  const dataStr = JSON.stringify(data);

  const dataSize = dataStr.length;

  const chunkCount = Math.ceil(dataSize / maxSize);

  for (let i = 0; i < chunkCount; i++) {

    const chunk = dataStr.slice(i * maxSize, (i + 1) * maxSize);

    wx.setStorageSync(`${keyPrefix}_${i}`, chunk);

  }

  wx.setStorageSync(`${keyPrefix}_count`, chunkCount); // 存储分片数量

}

回答关注问题邀请回答
收藏

3 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    10-17

    你好,麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点

    10-17
    有用
    回复
  • 王超超
    王超超
    10-17

    在 Android / iOS 上,wx.setStorageSync 最终会落地到系统的 SQLite / NSUserDefaults / MMKV 等机制。

    而在 HarmonyOS NEXT(纯血鸿蒙)上,微信小程序运行于 基于 ArkUI + Stage 模型的独立运行环境,微信需要用 ArkTS 容器层封装兼容 JS API

    因此 setStorageSync 的底层并非直接写入文件系统,而是走 ArkTS 的 persistent storage 模块(鸿蒙官方提供的 @ohos.data.preferences@ohos.data.storage)。

    该模块的官方说明里(HarmonyOS SDK 文档)提到:


    单条记录的数据上限为 ≤ 850 KB,超过将触发 E_STORAGE_FULL 异常。
    10-17
    有用
    回复
  • 智能回答 智能回答 本次回答由AI生成
    10-17
    有用
登录 后发表内容