🔫

Firebase Emulator で 8080 ポートにアクセスできない

2022/01/23に公開

トラブル

Firebase Emulator を起動しようとしたところ以下のエラーが発生しました。

Windows PowerShell
> firebase.cmd emulators:start
Error: TIMEOUT: Port 8080 on localhost was not active within 60000ms

firestore に設定している 8080 ポートが他のプロセスと被っているのかと思いポート番号を変更したり OS を再起動してみたのですが改善しませんでした。

firebase.json
{
  "emulators": {
    "auth": {
      "port": 9099
    },
    "functions": {
      "port": 5001
    },
    "firestore": {
      "port": 8080
    },
    "hosting": {
      "port": 5000
    },
    "ui": {
      "enabled": true
    }
  }
}
バージョン
> firebase.cmd --version
10.1.2
> npm --version
8.3.2
> node --version
v17.4.0

シューティング

方法1: ポートの重複を回避

当然ですが他のプロセスが 8080 ポートを使用していると Firebase Emulator が使用できません。
8080 ポートを使用しているプロセスを終了するか、異なるポートを使用することで起動できるようになります。

firebase.json
{
  "emulators": {
    "firestore": {
      "port": 8081
    },
  }
}

方法2: host を指定

https://github.com/firebase/firebase-tools/issues/2379#issuecomment-951884721

上記 Issue コメントにあるように "host": "127.0.0.1" を指定すると起動するようになりましたが動作がちょっと怪しい。

firebase.json
{
  "emulators": {
    "auth": {
      "port": 9099
    },
    "functions": {
      "port": 5001
    },
    "firestore": {
      "port": 8080,
      "host": "127.0.0.1"
    },
    "hosting": {
      "port": 5000
    },
    "ui": {
      "enabled": true
    }
  }
}

方法3: Node 16 へダウングレード

https://github.com/firebase/firebase-tools/issues/2379#issuecomment-962508524

Node のバージョンを 16 に下げたら問題なく動くようになりました。

Discussion