Expo从47升级到49后出现Invalid Adapter: asyncstorage错误求助
解决Expo 49升级后PouchDB AsyncStorage适配器无效问题
问题原因
Expo 49升级后,React Native内置的AsyncStorage已被废弃,官方推荐使用@react-native-async-storage/async-storage包,而旧版pouchdb-adapter-asyncstorage未适配该变化,导致适配器无法识别。
解决方案
方案一:适配官方AsyncStorage包
安装依赖
先安装官方AsyncStorage包,同时升级PouchDB相关依赖到兼容版本:npx expo install @react-native-async-storage/async-storage npm install pouchdb-react-native@latest pouchdb-authentication pouchdb-upsert pouchdb-find修改代码配置
更新导入和适配器配置,手动指定使用新的AsyncStorage实例:import React from 'react'; import PouchDB from 'pouchdb-react-native'; import PouchAuth from 'pouchdb-authentication'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { storeData } from './storageManager'; import PouchAsyncStorage from 'pouchdb-adapter-asyncstorage'; PouchDB.plugin(PouchAuth); PouchDB.plugin(require('pouchdb-upsert')); PouchDB.plugin(require('pouchdb-find')); PouchDB.plugin(PouchAsyncStorage); // 手动绑定新的AsyncStorage实例 PouchDB.defaults({ asyncStorage: AsyncStorage }); let LocalDatabase = new PouchDB('db_name', { adapter: 'asyncstorage', });清除缓存并重启
npx expo r -c
方案二:使用第三方适配的PouchDB适配器
如果方案一无效,可改用专门适配新版React Native的第三方适配器:
替换适配器依赖
npm uninstall pouchdb-adapter-asyncstorage npm install @craftzdog/pouchdb-adapter-react-native修改代码
import React from 'react'; import PouchDB from 'pouchdb-react-native'; import PouchAuth from 'pouchdb-authentication'; import { storeData } from './storageManager'; import ReactNativeAdapter from '@craftzdog/pouchdb-adapter-react-native'; PouchDB.plugin(PouchAuth); PouchDB.plugin(require('pouchdb-upsert')); PouchDB.plugin(require('pouchdb-find')); PouchDB.plugin(ReactNativeAdapter); let LocalDatabase = new PouchDB('db_name', { adapter: 'react-native', });清除缓存重启
npx expo r -c
内容的提问来源于stack exchange,提问作者adabounou
相关产品推荐
相关产品推荐

