You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo React Native集成Supabase遇AsyncStorage报错:NativeModule: AsyncStorage is null

解决[@RNC/AsyncStorage]: NativeModule: AsyncStorage is null错误

针对你在Expo React Native + Supabase项目中遇到的这个错误,以下是几个排查和解决方向:

1. 使用Supabase官方的Expo存储适配器(推荐)

Supabase针对Expo环境提供了专门的存储适配器,比直接使用@react-native-async-storage/async-storage兼容性更强。你可以按以下步骤替换:

首先安装依赖:

npm install @supabase/auth-storage-expo

然后修改你的supabase.js文件:

import "react-native-url-polyfill/auto";
import { createClient } from "@supabase/supabase-js";
import { ExpoStorageAdapter } from "@supabase/auth-storage-expo";

const supabaseUrl = process.env.SUPABASE_URL;
const supabaseAnonKey = process.env.SUPABASE_ANON_KEY;

export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
  auth: {
    storage: new ExpoStorageAdapter(),
    autoRefreshToken: true,
    persistSession: true,
    detectSessionInUrl: false,
  },
});

2. 排查AsyncStorage的加载问题

如果坚持使用原生AsyncStorage,可以尝试这些操作:

  • 确认项目类型:Expo managed项目内置AsyncStorage,无需额外安装;若为bare workflow,需手动安装@react-native-async-storage/async-storage,iOS端还要执行pod install
  • 清除缓存并重启项目:
    npx expo start --clear
    
  • 若使用了自定义开发客户端(通过eas build构建),需要重新打包客户端,因为原生模块变更必须重新构建才能生效

3. 验证环境变量与初始化顺序

  • 检查.env文件中SUPABASE_URL和SUPABASE_ANON_KEY是否配置正确,可在代码中临时打印这两个变量确认Expo能正常读取
  • 确保react-native-url-polyfill/auto的导入语句在最顶部,避免URL polyfill未加载引发连锁问题

内容的提问来源于stack exchange,提问作者Laspeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:47:13