【问题标题】:using expo and @react-native-community/async-storage使用 expo 和 @react-native-community/async-storage
【发布时间】:2022-02-12 01:13:04
【问题描述】:

我正在使用expo 来构建和捆绑我的应用程序。我添加了@react-native-async-storage/async-storage,但在控制台上出现以下错误:

Failed building JavaScript bundle.
Unable to resolve "@react-native-async-storage/async-storage" from "src/components/Message/Message.js"

我的设备还显示了多个可能有助于解决问题的步骤,如下所示

但不幸的是它没有解决它。 我也试过了:

  • ~/.expo/ 清理expo 缓存文件夹
  • 删除并重新安装 Expo Client 应用程序
  • 清除/tmp文件夹中的metro bundler缓存

我必须说,在检查 node_modules 文件夹时,我注意到该软件包安装在 @react-native-community 文件夹下而不是 @react-native-async-storage 下 - 但我不能确定这些链接是如何神奇地发生在引擎盖,但也许值得一提。

我在@react-native-async-storage/async-storage docs 中看到我需要运行另一个pod install 命令,但在expo 中,platform-specific 文件夹不可行,并且该命令运行时不执行任何操作。此外,我已经进行了expo snack example,但它运行正常。那么可能是我的环境中的某些内容或缺少某些配置?

有什么想法吗?

环境细节:

"expo": "^38.0.0",
"expo-cli": "3.27.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-38.0.2.tar.gz",
"@react-native-community/async-storage": "~1.11.0",

【问题讨论】:

  • 您是否尝试过使用--clear 选项启动打包程序?根据expo start --help,它清除 Metro 捆绑器缓存。也许 Metro 在更多地方有缓存,而不仅仅是/tmp? ??????
  • @StanisławChmiela 没有帮助:(
  • 清除缓存expo r -c

标签: javascript react-native expo asyncstorage


【解决方案1】:

不要从您的Message.js 文件中的@react-native-async-storage/async-storage 导入,而是尝试导入@react-native-community/async-storage

这是你安装的包,它被正确安装在node_modules@react-native-community目录下。

-import AsyncStorage from '@react-native-async-storage/async-storage';
+import AsyncStorage from '@react-native-community/async-storage';

【讨论】:

  • 我已经尝试过了 - 一旦组件弹出到屏幕,Expo Client 应用程序就会立即关闭 - 控制台上没有错误
  • 这一定有不同的原因。 ? 您使用什么设备来测试应用程序?您能否在 Snack 或其他项目中重现崩溃?如果您也删除AsyncStorage 代码,是否会发生崩溃?
  • 当我切换导入语句并进行调试时 - 我看到一个错误 "Warning: AsyncStorage has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-community/async-storage' instead of 'react-native'. See https://github.com/react-native-community/async-storage"
  • 它发生在我的 iphone 11 设备和模拟器上。不幸的是,还没有在小吃上复制
  • 1.看起来只有当您从 react-native 导入时才会出现警告。话虽如此,如果它阻止您并且我们无法找出问题所在,则可以忽略它。
【解决方案2】:

如果您使用以下方式运行 expo:

expo start --dev-client

您可能需要重新构建您的开发客户端。

如果您使用 Expo GO 跑步,它将自动链接:

expo start

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2021-11-13
    • 1970-01-01
    • 2017-10-31
    • 2021-02-16
    相关资源
    最近更新 更多