個人開発でNuxt3とFirebaseでの環境構築をしていた。
Firebase Emulatorを使うために色々ドキュメントや記事を見ながら進めていたところ、Javaのバージョンエラーに遭ってしまったため、本記事に記録します。
エラー内容
下記コマンドでエミュレーターを起動させようとしたところ、
firebase emulators:start
エラーが出てしまった。
エラー1
i emulators: Shutting down emulators.
Error: Process `java -version` has exited with code 1. Please make sure Java is installed and on your system PATH.
-----Original stdout-----
-----Original stderr-----
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
Having trouble? Try firebase [command] --help
どうやらjavaがPCに入っていないよう(インストールした覚えがなかった)なのでhttp://www.java.com
へアクセスしインストールしにいった。
緑のJavaのダウンロード
ボタンを押すだけでダウンロードが始まる。
インストールが完了したので、もう一度コマンド実行しました。
エラー2
⬢ emulators: firebase-tools no longer supports Java version before 11. Please upgrade to Java version 11 or above to continue using the emulators.
i emulators: Shutting down emulators.
Error: firebase-tools no longer supports Java version before 11. Please upgrade to Java version 11 or above to continue using the emulators.
「あれ…?Javaインストールしたけど、、」
ってなりました笑
色々調べた結果、
firebase-toolsは、インストールされているJavaランタイムのバージョンではなく、インストールされているJDKのバージョンを参照するみたい。
JDKをダウンロードしないといけなかったぽいですね。
Emulator Suite をインストールする前に、以下が必要です。
Local Emulator Suite のインストール、構成、統合
ってことで、Java JDKのバージョン11以降をダウンロードしにいきます
Java JDKのインストールしたら治った
私はM1 Macなので、Mac用JDKインストール画面へ行きました。リンクは下記になります
https://www.oracle.com/java/technologies/downloads/#jdk17-mac
JDK17のMacOSで、ARM64 DMG Installerを選択した。
各自環境に合わせてJDKをインストールしてください。
これでfirebase emulators:start
したら無事起動しました🎉
hosting port 5000のエラーが出た場合
i emulators: Starting emulators: auth, firestore, hosting, storage
⚠ hosting: Port 5000 is not open on localhost (127.0.0.1,::1), could not start Hosting Emulator.
⚠ hosting: To select a different host/port, specify that host/port in a firebase.json config file:
{
// ...
"emulators": {
"hosting": {
"host": "HOST",
"port": "PORT"
}
}
}
i emulators: Shutting down emulators.
⚠ ui: Emulator UI unable to start on port 4000, starting on 4001 instead.
Error: Could not start Hosting Emulator, port taken.
ポートが重複しているエラーですね。このエラーもすぐに治せました。
lsof -i :5000
ってコマンド打つと、5000番が使われている場所を見ることができます。
`kil` すると使えるようになるのですが、Macの場合、AppleのAirPlayのRecieverで5000番ポートを占有しているようです。
firebase.json
のhostingのportを5002に変更することでエラーがエミュレータの起動ができると思いますす。
"hosting": {
"port": 5002
}
最後に
NuxtもFirebaseもまだまだ分からないことだらけなので、じっくり勉強してアプリ開発に活かせるように頑張りたいです〜