我正在使用Expo创建一个React Native项目。我一直在使用常规old AsyncStorage,从导入react-native,并且一切都很好。
在查找如何模拟AsyncStorage进行测试时,我看到react-native-community/react-native-async-storage它内置了自己的模拟。
因此,我使用安装了社区插件,yarn add并关闭了所有导入语句。
当我运行我的应用程序时,出现错误(我正在重新输入自己的名字,请省略一些省略号):
[@RNC/AsyncStorage]: NativeModule: AsyncStorage is null.
To fix this issue try these steps:
-Run `react-native link @react-native-community/async-storage` in the project root.
-Rebuild and restart the app
-Run the packager with `--clearCache` flag.
-If you are using CocoaPods on iOS...
-If this happens while testing with Jest...
Run Code Online (Sandbox Code Playgroud)
因此,我尝试运行,react-native link @react-native-community/async-storage但始终收到此错误:
Something went wrong while linking. Error: Cannot read property 'pbxprojPath' of null
Run Code Online (Sandbox Code Playgroud)
一些研究表明,Expo应用程序不能(也不需要)链接。
我npm start --clearCache无济于事。
另外,我的项目中没有ios(或android)文件夹。这一直让我感到困惑,因为我看到它遍及整个地方。我通过Expo应用程序在模拟器/仿真器(和设备)中运行我的应用程序。一旦我尝试弹出,便出现了问题。所以,我没有ios文件夹。
(我将回过头使用旧的本机AsyncStorage,react-native自己创建一个模拟,但我想知道如何解决此问题,以及将来可能出现的类似问题。)
Tad*_*she 31
可以通过链接上述模块来纠正此错误,但如果您的应用程序是Expo Managed(通过 expo-cli 创建),则链接不起作用。
假设您的应用程序是由 Expo 管理的,而不是使用Facebook RN 文档中的AsyncStorage:
import AsyncStorage from '@react-native-community/async-storage';
Run Code Online (Sandbox Code Playgroud)
做:
import { AsyncStorage } from 'react-native';
Run Code Online (Sandbox Code Playgroud)
在此处查看文档:AsyncStorage Expo
小智 16
对我来说解决这个问题的方法是首先安装以下库:
expo install @react-native-async-storage/async-storage
Run Code Online (Sandbox Code Playgroud)
然后,更新您的导入:
import AsyncStorage from '@react-native-async-storage/async-storage'
Run Code Online (Sandbox Code Playgroud)
注意:修复后您可能需要重新启动 Expo。
我刚刚遇到了类似的问题,发现 Krizzu 在 github 上提供的答案非常有帮助。他是这样说的:“如果您使用的是 expo,则无法添加此软件包。使用世博会提供的任何内容(并忽略有关弃用的警告)。和“除非您弹出项目,否则您无法向 expo 添加其他本机模块。”
您可以按照以下主题阅读有关此问题的更多信息:https: //github.com/react-native-community/react-native-async-storage/issues/89和https://github.com/react-native-社区/react-native-async-storage/issues/72。我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
3523 次 |
| 最近记录: |