HarmonyOS鸿蒙Next中调用PersistenceV2.save报错Error message:For 'storeUserData' key: TypeError: Cannot read property __proto__ of null

HarmonyOS鸿蒙Next中调用PersistenceV2.save报错Error message:For ‘storeUserData’ key: TypeError: Cannot read property proto of null

使用的是api13 api12正常

//声明 连接
let obj = PersistenceV2.connect(StoreUser, "storeUserData", () => new StoreUser())!;

//调用下面的函数报错

PersistenceV2.save("storeUserData")
@ObservedV2
export class StoreUser {
  //用户信息
  @Trace userInfo: UserAccountInfo = new UserAccountInfo();
  @Trace userId = 0 //登录token
  @Trace userToken = "" //登录token
  @Trace pushToken = "" //推送token
  @Trace currSubPageName = ""
  @Trace wechat_bind_key = "bind--dahdiahiudaiuda==="
  //最近更新app信息的时间戳
  @Trace lastUpdateAppInfoTime = 0
}
调用keys函数返回正常
let keys = PersistenceV2.keys()
Logger(JSON.stringify(keys))

更多关于HarmonyOS鸿蒙Next中调用PersistenceV2.save报错Error message:For 'storeUserData' key: TypeError: Cannot read property __proto__ of null的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

按照代码复现一份,未出现错误,save时候是已经使用kesy获取到了storeUserData的key值,然后依旧提示报错吗

更多关于HarmonyOS鸿蒙Next中调用PersistenceV2.save报错Error message:For 'storeUserData' key: TypeError: Cannot read property __proto__ of null的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


对 获取keys正常,但是调用save就报错。
就算不显示调用save
static notifyOnError(callback: PersistenceErrorCallback | undefined): void;
改变storeUserData里面的值,依旧会触发到错误回调notifyOnError,

定位不到问题,现在已经变相实现了
AppStorageV2+ Preferences 来实现这个功能,

Hello World

  • Click to save storeUserData and log keys
在HarmonyOS鸿蒙Next中调用`PersistenceV2.save`时出现`Error message: For 'storeUserData' key: TypeError: Cannot read property __proto__ of null`的错误,通常是由于在调用`save`方法时传入的`key`或`value`为`null`或`undefined`导致的。`PersistenceV2`是鸿蒙系统中的持久化存储API,用于保存用户数据。`save`方法需要传入有效的`key`和`value`参数,且`key`必须是字符串类型,`value`可以是字符串、数字、布尔值、对象或数组等类型。如果传入的`key`或`value`为`null`或`undefined`,系统无法正确处理这些值,导致`__proto__`属性无法读取,从而抛出该错误。

解决方法包括:确保在调用`save`方法时传入的`key`和`value`参数不为`null`或`undefined`,并且`key`是有效的字符串。如果`value`是对象或数组,确保其结构正确且不包含`null`或`undefined`。如果`value`是复杂对象,可以尝试使用`JSON.stringify`将其转换为字符串后再保存。如果问题依然存在,检查代码逻辑,确保在调用`save`方法之前对`key`和`value`进行了正确的初始化和赋值。

此外,确保使用的是最新版本的`PersistenceV2` API,并遵循鸿蒙系统的开发规范。如果问题持续,建议通过调试工具检查`key`和`value`的具体值,以进一步排查问题。

这个错误通常表示在调用PersistenceV2.save时,传递的storeUserData参数存在问题,可能是null或未正确初始化。建议检查以下几点:

  1. 参数初始化:确保storeUserData对象已正确初始化,且不为null
  2. 数据类型:确认storeUserData的类型符合API要求,通常是StoreUserData对象。
  3. 上下文绑定:确保在调用save方法时,this上下文正确绑定。
  4. API文档:参考官方文档,确认storeUserData的属性和方法是否正确实现。

如果问题仍未解决,建议打印相关对象,调试具体问题。

回到顶部