🦵
firebaseによるAsyncStorage警告はgetReactNativePersistenceで解決できる
expoからFirestoreを利用していると、下記のような警告が出ていて困っていた
Warning: Async Storage has been extracted from react-native core
and will be removed in a future release. It can now be installed
and imported from '@react-native-community/async-storage'
instead of 'react-native'. See https://github.com/react-native-community/react-native-async-storage
firebase@9.4.1
以上であれば抑止する方法が入っているようだった
やり方
getReactNativePersistence
というのが追加されているので、これを利用する。
import { getApp, getApps, initializeApp } from "firebase/app"
import { getAuth, initializeAuth } from "firebase/auth"
import AsyncStorage from "@react-native-async-storage/async-storage"
import { getReactNativePersistence } from 'firebase/auth/react-native'
const initalizeFirebase = () => {
const app = initializeApp(FIREBASE_CONFIG)
// ↓この設定を追加
initializeAuth(app, {
persistence: getReactNativePersistence(AsyncStorage)
})
}
もしかしてユーザーがログアウトされてしまうのでは?というようなことも考えたが、少なくとも試した限りは特にログアウトされるというような現象は確認されなかった
(かなり色々な要素が絡んでいる可能性があるので、利用する際は十分にテストすることをオススメします)
jestがコケる
しかし残念ながら、この設定を入れると、jestが下記のようなエラーを出してしまう
SyntaxError: Unexpected token export
mockでカバーする方法もあったが、jest-node-exports-resolver
を入れてしまう方が楽に解決出来そうだった
$ yarn add -D jest-node-exports-resolver
configは下記のように追加すと解決するようだった
// jest.config.js
module.exports = {
//...
resolver: 'jest-node-exports-resolver',
// ...
}
Discussion