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

Expo React Native集成expo-sqlite遇Native Module缺失及路由导出问题

Expo项目集成expo-sqlite遇到的两个错误及解决方法

问题描述

在Expo项目中使用expo-sqlite集成SQLite时,运行项目遇到两个错误:

  1. (NOBRIDGE) ERROR Error: Cannot find native module 'ExpoSQLite'
  2. (NOBRIDGE) WARN Route "./note/index.tsx" is missing the required default export

已执行操作:

  • 通过npx expo install expo-sqlite安装依赖
  • 遵循expo-sqlite官方文档的基础使用规范
  • 尝试重装node_modules、清除项目缓存

环境信息:Expo SDK 52.0.23、Tinybase 5.4.5

相关代码片段:

export default function NoteApp(){
    const store =  useCreateStore(createStore);
    useAndStartPersister(store);

    return(
      // TSX内容
    )
}

const useAndStartPersister = (store : any) =>
    // Persist store to Expo SQLite or local storage; load once, then auto-save.
    useCreatePersister(
      store,
      (store) =>
        Platform.OS === 'web'
          ? createLocalPersister(store, 'todos')
          : createExpoSqlitePersister(store, SQLite.openDatabaseSync('todos.db')),
      [],
      // @ts-ignore
      (persister) => persister.load().then(persister.startAutoSave)
    );

期望目标:项目正常运行,按expo-sqlite文档实现SQLite数据库交互。


错误1:Cannot find native module 'ExpoSQLite' 解决方法

  • 使用正确的启动命令:Expo SDK 52需通过npx expo start --dev-client启动项目,不能用传统的expo start。新SDK的原生模块依赖自定义开发客户端,Expo Go可能无法兼容部分模块,建议创建专属开发客户端。
  • 匹配依赖版本:运行npx expo install expo-sqlite@latest,确保expo-sqlite版本与SDK 52完全兼容。
  • 彻底清除缓存:执行npx expo start --clear,清除Expo的所有缓存文件,避免旧缓存导致模块加载异常。
  • 检查模块导入:确认代码中正确导入SQLite模块,比如import * as SQLite from 'expo-sqlite';,排查拼写错误。

错误2:Route "./note/index.tsx" is missing the required default export 解决方法

  • 补全默认导出:打开./note/index.tsx文件,确保存在一个默认导出的组件或函数,示例:
    export default function NoteIndex() {
      return <div>笔记页面</div>;
    }
    
  • 核对路由规范:如果使用Expo Router,确保路由文件符合要求——index.tsx必须作为路由入口,且必须包含默认导出。

代码优化建议

补充必要导入并优化类型定义,避免潜在问题:

import { Platform } from 'react-native';
import * as SQLite from 'expo-sqlite';
import { useCreateStore, createStore } from 'tinybase';
import { useCreatePersister } from 'tinybase/ui-react';
import { createLocalPersister } from 'tinybase/persisters/persister-local';
import { createExpoSqlitePersister } from 'tinybase/persisters/persister-expo-sqlite';

export default function NoteApp(){
    const store = useCreateStore(createStore);
    useAndStartPersister(store);

    return(
      // 你的TSX内容
    )
}

const useAndStartPersister = (store: ReturnType<typeof createStore>) => {
    useCreatePersister(
      store,
      () =>
        Platform.OS === 'web'
          ? createLocalPersister(store, 'todos')
          : createExpoSqlitePersister(store, SQLite.openDatabaseSync('todos.db')),
      [],
      async (persister) => {
        await persister.load();
        persister.startAutoSave();
      }
    );
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:46:08