GAE/go + Cloud Firestoreで開発をしようと思いローカルでエミュレータを使ってみた。
エミュレータを使う流れは以下の通り。
- gcloud コマンドでエミュレータを起動
- FIRESTORE_EMULATOR_HOSTの値を設定
gcloud コマンドでエミュレータを起動
|
|
FIRESTORE_EMULATOR_HOSTの値を設定
エミュレータ起動じに表示されるFIRESTORE_EMULATOR_HOST
の値を設定
|
|
ちゃんと接続できるか試してみた
そして試しにデータが登録・取得できるかを試してみた。
|
|
しかし、レスポンスが返ってこなかった。
どうやら iter.Next()
の処理で止まっているみたいだった。
IPv4で接続してみる
--host-port
オプションでIPv4を使った起動ができる
|
|
この場合はFIRESTORE_EMULATOR_HOST
は以下のように設定する
|
|
これだと無事つながる
なぜIPv6だとつながらないのか?
調べたところローカルホストの指定の仕方が悪いみたい。
例えばブラウザでアクセスするときはhttp://[::1]:8000
のように[]
を指定しなけければならない。
しかしFirestoreのエミュレータ起動した場合に表示されるのはexport FIRESTORE_EMULATOR_HOST=::1:8088
と出ている。
[]
をつけて環境変数を設定してみた。
|
|
これで解決できた。
まとめ
- gcloudコマンドでFirestoreのエミュレータ使うときは環境変数
FIRESTORE_EMULATOR_HOST
設定時に[]
をつけてホストをしている - もしくは
--host-port
でIPv4で起動して、環境変数FIRESTORE_EMULATOR_HOST
を設定する