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

React Native与Expo集成Realm报错:Getting '$$typeof' from binding before it was injected

Expo + Realm 问题解决方案

一、npx expo prebuild仅生成Android文件夹的处理

  • 确认iOS开发环境:仅macOS支持iOS预构建,需安装Xcode并配置Command Line Tools(执行xcode-select --install可快速安装)。
  • 显式指定iOS平台构建:运行npx expo prebuild --platform ios强制生成iOS文件夹。
  • 清理缓存后重试:先执行npx expo start --clear清除Expo缓存,再重新执行预构建命令。

二、Hermes引擎的$$typeof绑定错误修复

该错误源于Realm与Hermes的初始化时机冲突或版本不兼容,可按以下步骤排查:

  • 对齐Realm与Expo版本:检查package.json,确保realm版本与当前Expo SDK匹配(例如Expo SDK 49+对应Realm 12.0及以上版本),版本不匹配会导致底层绑定异常。
  • 延迟Realm初始化:避免在组件顶层直接初始化Realm,将初始化逻辑放在useEffect中,确保JS环境完全就绪后再执行:
    import React, { useEffect, useState } from 'react';
    import Realm from 'realm';
    
    export default function App() {
      const [realmInstance, setRealmInstance] = useState(null);
    
      useEffect(() => {
        const setupRealm = async () => {
          const realm = await Realm.open({
            schema: [/* 你的数据模型Schema */],
          });
          setRealmInstance(realm);
        };
        setupRealm();
    
        // 组件卸载时关闭Realm实例
        return () => realmInstance?.close();
      }, []);
    
      // 后续基于realmInstance进行数据库操作
      return <>{/* 组件内容 */}</>;
    }
    
  • 临时切换JS引擎:若上述方法无效,可在app.json中切换到JSC引擎绕过问题:
    {
      "expo": {
        "ios": { "jsEngine": "jsc" },
        "android": { "jsEngine": "jsc" }
      }
    }
    
  • 重置项目依赖:删除node_modules、package-lock.json(或yarn.lock),重新执行npm install,再重新预构建和启动项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:46:01