こんにちは。やらしみずです。
先日リリースした元素記号早押しアプリ & 数字の早押しアプリにランキング機能を付ける関係で、Firebaseのデータベース?、FireStoreの設定をしている時に小一時間ハマってしまったエラーがあったので備忘録を残しておきます。
エラー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// firebaseをインストール $ expo install firebase // App.js等のファイルにFirebaseの設定を書く $ emacs App.js → FirebaseのDocを見ながら設定 $ expo start → iosシュミレーターを起動 // エラー表示される [Unhandled promise rejection: ReferenceError: Can't find variable: crypto] ... ... |
対応方法1
私が使っているFirebaseのバージョンが、firebase 7.13.0だったのですが、firebase 7.9.0より上のバージョンを使っていると、次のエラーが出るらしいです。
なので、素直にバージョンを下げてみます。
1 2 3 4 5 6 |
// 既存のバージョンを削除 $ npm remove firebase // 安定しているやつ?をインストール $ npm install --save firebase@7.9.0 |
ちなみに、他にも以下のようなエラーが出てくることもあるようですが、同じ対応で良さそうです。
1 2 3 4 |
[Unhandled promise rejection: ReferenceError: Can't find variable: atob] ... |
対応方法2
対応方法1で解決するとStackOverflowには書いてあったのですが、それでもうまく行かない、、、
というときは、キャッシュの問題かもしれません。
私はそうだったようで、
1.キャッシュの削除
1 2 3 |
expo start -c |
2.端末(エミュレーター)の再起動
3.MacPC自体の再起動
の3つをやって、3つ目でやっとエラーが解消されました。
おまけ
Firebase側でルールを変更していないと次のエラーが出ます。
1 2 3 |
[Unhandled promise rejection: FirebaseError: Missing or insufficient permissions. |
パーミッションを変更してあげることで動作するようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
// (設定例) // ちなみにこの設定だと誰でもID等を知っていればアクセス出来てしまうので、後で適切な設定に変更する必要あります。 rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write; } } } |
最後に
ReactNativeのFirebase、まだまだ不安定なところが多いですが、作り終わってソースを見るとシンプルな仕組みで感動しますね。
ただ謎のエラーばっかなのと日本語の情報が少ないのだけは辛い、、、
日本人のReactNativeユーザもっと増えてほしい!!
コメント