You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Expo React Native从Expo Go迁移到Dev Build时的依赖报错问题求助

Expo React Native从Expo Go迁移到Dev Build时的依赖报错问题求助

问题描述

我正尝试把我的Expo应用从Expo Go迁移到Expo Dev Build。一开始构建开发客户端时,遇到了错误:

(NOBRIDGE) ERROR Warning: Error: [@RNC/AsyncStorage]: NativeModule: AsyncStorage is null

折腾了一堆办法都没修好,我以为是AsyncStorage本身的问题,就把所有相关代码都删掉,换成了Expo SecureStore,结果还是不行,现在依然遇到类似的NativeModule为空的错误。

排查与解决建议

我之前迁移的时候也踩过类似的坑,给你几个实际可行的排查方向:

  • 确认依赖版本匹配并重新安装
    不管是@react-native-async-storage/async-storage还是expo-secure-store,首先得确保它们的版本和你当前的Expo SDK版本兼容。先执行这条命令重新安装依赖,让Expo自动匹配合适的版本:

    npx expo install @react-native-async-storage/async-storage expo-secure-store
    
  • 彻底清缓存,重新构建客户端
    缓存真的是这类问题的重灾区,按顺序执行下面的命令,把所有可能的缓存都清干净:

    # 清理prebuild生成的原生文件
    npx expo prebuild --clean
    # 删除node_modules并重装依赖
    rm -rf node_modules && npm install
    # 清除Expo的缓存并重启开发服务
    npx expo start --clear
    

    注意!一定要重新构建Dev Build客户端,旧的安装包不能再用了,必须装新构建的版本才能生效。

  • 检查配置文件有没有误改
    打开你的app.json或者app.config.js,看看有没有不小心删掉了必要的配置:

    • 比如expo.ios.infoPlistexpo.android.androidManifest里的权限,SecureStore需要的权限是Expo默认包含的,但如果手动修改过配置,可能不小心移除了;
    • 确认plugins数组里有没有漏掉相关插件(Expo官方库一般不需要手动加,但第三方库可能需要)。
  • 排查第三方依赖的兼容性
    有些老的第三方库可能不支持Expo Dev Build,你可以试试暂时注释掉最近新增的依赖代码,看看错误会不会消失。找到问题库后,要么升级到兼容Dev Build的版本,要么换成Expo官方支持的替代库。

  • 确保用正确的命令构建和启动
    构建Dev Build的时候,别用Expo Go的启动命令,一定要用对应的run命令:

    # iOS Debug构建
    npx expo run:ios --configuration Debug
    # Android Debug构建
    npx expo run:android --mode debug
    

备注:内容来源于stack exchange,提问作者eschev

火山引擎 最新活动