【问题标题】:Undefined is not an object (evaluating 'RCTAsyncStorage.multiMerge' (React-native-asyncstorage)未定义不是对象(评估 'RCTAsyncStorage.multiMerge' (React-native-asyncstorage)
【发布时间】:2018-04-28 11:04:01
【问题描述】:

我在此处遇到了与 react-native-asyncstorage 相关的问题: https://facebook.github.io/react-native/docs/asyncstorage.html

当我运行react-native run-ios 时,出现以下错误:

我使用的是 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);
    }
}

【问题讨论】:

  • 如果您能分享使用 AsyncStorage 的代码会很有帮助。
  • @KirillGlazunov 在帖子中编辑。
  • 我刚开始遇到同样的问题。你有没有运气解决它?当我通过 TestFlight 部署应用程序时,很好。只是通过 Xcode 构建有这个问题。
  • 最后,我的团队决定从项目中完全移除 Expo。然后,它起作用了。不过,我不认为这种方式是最好的解决方案。

标签: react-native expo asyncstorage


【解决方案1】:

正如文档中所说:注意:并非所有本机实现都支持这一点,因此您可能会在错误中运行。

也可能是您正在使用的 Reactotron(根据堆栈跟踪)导致此问题。首先尝试禁用它?

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

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

然后您可以使用lodash.merge 编写自己的函数。

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

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2019-04-05
    相关资源
    最近更新 更多