昨日まで起動してたFirestore Emulatorが急に起動できなくなったので色々調べてみたけど、結局何も分からなかった。
自分で色々やってみたので忘れ得ない様にメモ!
環境
Mac OS Catalina ver10.15.3
Error: Port 8080 is not open, could not start firestore emulator.
firebase-toolsのバージョンが古いから更新をしろとメッセージが出ていたから素直に更新ししてみたが当然起動はできず・・・
何に8080ポートを使っているか調べてみることに!
調べるには sudo lsof -i:[ポート番号]
sudo lsof -i:8080
Password:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1600 [ユーザー名] 67u IPv6 0x00a0c000b000c0c0 0t0 TCP localhost:http-alt (LISTEN)
javaがローカルサーバーを使っているっぽい...
とりあえずこいつを解放することに。
開放するには kill [PID]
で開放できます。
$ kill 1604
$ sudo lsof -i:8080
何も出なかったので開放できたっぽい。気を取り直してエミュレータを立ち上げると
$ firebase serve --only firestore
⚠ Please use firebase emulators:start to start the Realtime Database or Cloud Firestore emulators.
i firestore: Serving ALL traffic (including WebChannel) on http://localhost:8080
⚠ firestore: Support for WebChannel on a separate port (8081) is DEPRECATED and will go away soon. Please use port above instead.
⚠ Setup required, please run: firebase setup:emulators:firestore
Error: emulator not found
エミュレーターがないと怒られたので、素直に書いてある通りに firebase setup:emulators:firestore
でセットアップしてみました。
$ firebase setup:emulators:firestore
i firestore: downloading cloud-firestore-emulator-v1.11.2.jar...
Progress: =================================================================================================================> (100% of 90MB
i firestore: Removing outdated emulator files: cloud-firestore-emulator-v1.10.2.jar
とりあえずセットアップは完了したので気を取り直して再び起動してみる。
$ firebase serve --only firestore
⚠ Please use firebase emulators:start to start the Realtime Database or Cloud Firestore emulators.
i firestore: Serving ALL traffic (including WebChannel) on http://localhost:8080
⚠ firestore: Support for WebChannel on a separate port (8081) is DEPRECATED and will go away soon. Please use port above instead.
i firestore: firestore emulator logging to firestore-debug.log
✔ firestore: firestore emulator started at http://localhost:8080
無事に起動できました!
基本、デフォルトでは8080ポートを使う様ですが使用するポートは変更できます。
やり方はエミュレータを実行するに載っています。
今回は調べても別のポートを設定する方法ばかりだったので自分で開放してみたらいいのでは?と思いやってみましたが、他にいい方法があれば教えてください!