こんにちは。virapture株式会社でCEOしながらラグナロク株式会社でもCKOとして働いている@mogmetです。
まったく最近忙しすぎてOutputできてなかったのですが、たまにはアウトプットを頑張ろうと久々に手をとりました。
今回はトラブルシューティング系のものになります。
エラー概要
adminで使われるnode.jsやクライアントで使われるjsの環境にて、firestoreのインスタンスを取ろうとすると下記のようなエラーが出ることがあります。
Error: Service firestore is not available
firebase自体のinstanceも生成できてるのになんで・・・と毎回苦しんでました
原因
モノレポなどでやっていると発生しがちなのですが、共通パッケージとかで使っているfirebaseのバージョンが一致していないために発生するものになります。
参照してるパッケージが違うとこのようなエラーになるようなので、adminとclientがごっちゃになってる場合も要注意です。
解決策
2つあります
その1: versionが合っているか
firebaseのバージョンを合わせてインストールし直してください!
その2: typeを使う
importする時に実体をインポートするだけでこのケースに陥る事があるので、typeを使ってimportするようにしてみましょう。
こんな感じです。
import type { DocumentSnapshot as ClientDocumentSnapshot } from 'firebase/firestore'
import type { firestore as serverFirestore } from 'firebase-admin'
まとめ
service xxx is not available
といわれたらパッケージのバージョンを疑うようにしましょう!
最後に、スノボの楽しく滑るコツを掴める cotsume というアプリを作ってます!よかったらDLしてみてね!
また、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!
他にもCameconやOffcha、問い合わせ対応が簡単にできるCSmart、フリーランスのコミュニティのNextFreelanceといったサービスも作ってるのでよかったら使ってね!
また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。
https://virapture.com/
https://menta.work/user/20565
ラグナロクでもエンジニアやデザイナーのメンバーを募集しています!!楽しくぶち上げたい人はぜひお話ししましょう!!