下面的代码,在安卓和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); // 存储分片数量
}

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