エラーの内容
・「React Native + Expo」アプリ にFirebaseの最新バージョン(9.8.4)をインストールし、公式ドキュメントでおこなっている初期化処理を記述。
・「expo start」でiOSシュミレーターを起動した際、以下エラーが発生
初期化処理
import { initializeApp } from 'firebase/app';
const firebaseConfig = {
apiKey: 'api-key',
authDomain: 'project-id.firebaseapp.com',
databaseURL: 'https://project-id.firebaseio.com',
projectId: 'project-id',
storageBucket: 'project-id.appspot.com',
messagingSenderId: 'sender-id',
appId: 'app-id',
measurementId: 'G-measurement-id',
};
// Initialize Firebase
initializeApp(firebaseConfig);
※firebaseConfigに記載したAPI Keyは公式サイトから引用。実際はFirebaseプロジェクト作成時にできる自分専用のコードを記載している。
initializeApp関数を呼び出した際にこのエラーが発生するよう。
エラーの内容で気になる箇所は、以下の
「However, this package itself specifies a main
module field that could not be resolved.
Indeed, none of these files exist:」
部分。
日本語訳すると
「しかし、このパッケージ自体が main
モジュールのフィールドを指定しており、解決できませんでした。
実際、これらのファイルは一つも存在しません。」
何かファイル(というかパッケージ?)が足りないのか。。
解決策(というか対応策)
firebase のバージョンを9.8.4から公式ドキュメントの例で使われている9.1.0に変える。
yarn add 'firebase@9.1.0'
これで取り敢えずエラーは解消され、initializeAppを呼び出しても正常にシュミレーターが起動するようになりました。
まとめ
取り敢えず、同じ9系だし最新のExpo公式ドキュメントで使われている記述なので、大きな問題はないと思い「9.1.0」を使用することにしました。
お茶を濁すような解決策ではあるけれど、8系に落とすよりはマシかなと、甘めに判断。。
どなたか9.8.4でも上記エラー起きずにFirebaseと連携する方法知っていれば、ご教授いただきたいです。。
後日談
↓こちらのやり方で、あっさり解決。無事、9.8.4でもFirebase連携できるようになりました。
@sugasaki さん、良い記事ありがとうございます。。!(面識ないのでこの場でこっそりお礼)
https://qiita.com/sugasaki/items/9e642329b83094a081fb
↑参考文献も後で確認し理解を深めよう。