未定义不是对象(评估' RCTAsyncStorage.multiMerge'(React-native-asyncstorage)

时间:2018-04-28 11:04:01

标签: react-native expo asyncstorage

我从这里遇到与react-native-asyncstorage相关的问题: https://facebook.github.io/react-native/docs/asyncstorage.html

当我运行react-native run-ios时,会出现以下错误: enter image description here

我使用的是react-native 0.52.0,这个问题可能是由于react-native-asyncstorage的依赖:

  

react-native-asyncstorage@1.0.0需要一个对等方   react-native@^0.47.2但没有安装。你必须安装同行   依赖自己。

奇怪的是它适用于Android,但不适用于iOS和iOS模拟器。

有人可以帮忙吗?

修改

我想补充一些可能有用的要点:

  • 我使用Expo进行开发,
  • 我在代码中评论了每个AsyncStorage,但问题仍然存在,
  • 正如评论中所述,这是我的AsyncStorage代码的剪切代码

-

import { AsyncStorage } from 'react-native';
export async function SetItem(strKey, objValue) {
    try {
        if (typeof(objValue) === 'string') {
            await AsyncStorage.setItem(strKey, objValue);
        }
        else {
            await AsyncStorage.setItem(strKey, JSON.stringify(objValue));
        }
    } 
    catch(error){
        console.log(error);
    }
}

1 个答案:

答案 0 :(得分:-1)

如文档中所述:注意:所有本机实现都不支持,因此可能会出错。

你可能正在使用 Reactotron (根据堆栈跟踪)导致这种情况。首先尝试禁用它吗?

您是否拥有AsyncStorage的自定义实施(例如:https://www.npmjs.com/package/react-native-asyncstorage)?如果是这样,除非有特殊原因要使用它,请将其取下(请在问题中详细说明)

但总的来说,您可以使用React Native Simple Storeupdate方法。

或者你可以用lodash.merge编写自己的函数。

如果问题仍然存在,即使注释掉所有AsyncStorage代码,删除可能的自定义依赖项并取消Reactotron,你也找不到自己编写multiMerge的方法,更新你的问题并在这个答案上ping我。