Kozaneba開発日記2021-08-03
今日の一枚
https://gyazo.com/c2db45f96be0e3dbd64f864e8dd49f58
---
https://gyazo.com/a9bf026f6d8fedf4194fad70e273b5c0
https://gyazo.com/c2db45f96be0e3dbd64f864e8dd49f58
Cypress環境でGoogleが「このブラウザは安全ではないのでログインさせませーん」と言ってくることがわかった、これは…どうするのがいいのか…
ログインできるとこうなる
https://gyazo.com/f1daec02929883a67f49b843261ec29c
https://gyazo.com/0f7adba500d9b354f594cf93fc6d71da
https://gyazo.com/b5a724ec32a5170c33982ff23d323d9e
Error
Your API key is invalid, please check you have copied it correctly.
手軽にできるかと思ったが情報量の少ないエラーにぶつかってしまった
たぶんLocal Emulator Suiteを構成してローカルのサーバで認証を行うのが良さそう
2021-08-04
$ firebase init emulators
code::
=== Project Setup
First, let's associate this project directory with a Firebase project.
You can create multiple project aliases by running firebase use --add,
but for now we'll just set up a default project.
? Please select an option: Use an existing project
Error: Failed to list Firebase projects. See firebase-debug.log for more info.
古いバージョンのログイン情報では失敗するのでログインし直すといいらしい
$ firebase logout
$ firebase login
OK、できた
$ firebase emulators:start
https://gyazo.com/c4dba360588a600e820155a5a0f04b73
https://gyazo.com/030750d60fbb7f81db39db7e3ee3566e
https://gyazo.com/581925abfc1da86af130f48d1863ba9a
匿名ログインではないけどdisplayNameがないから匿名だと表示されちゃってるな
エミュレータの側でユーザを設定できる
https://gyazo.com/66b20dfa8e4aff84601c4de6941b2c88
https://gyazo.com/14e588098aa587c00dd2e57e94cd5803
https://gyazo.com/64989f1edefacf1f3f1d8e37c17d2960
ちゃんとユーザ名が表示された
---
$ firebase emulators:start
code::
⚠ firestore: Did not find a Cloud Firestore rules file specified in a firebase.json config file.
公式のサンプルに構文エラーがあるけど。
設定ファイルを書いてJavaをインストールしたら動いた。
https://gyazo.com/390da980e7dfa8c5b3c2b7bd1e9e179d
Firestoreがローカルで動いてるのでいつでも後腐れなく全消去できるし、雑に保存してみるか(ぇ
というかテストコードから全消去できないとテストの挙動が変わっちゃうよな、あるはずか
あったあった
Firestore の本番環境では、データベースをフラッシュするためのプラットフォーム SDK メソッドは提供されませんが、Firestore エミュレータでは、このための REST エンドポイントが提供されます。
Cypress+Firestore+experimentalForceLongPolling=CORB
firebase.firestore().settings({ experimentalForceLongPolling: true })
Cross-Origin Read Blocking (CORB) blocked cross-origin response https://firestore.googleapis.com/google.firestore.v1.Firestore/Write/channel?... with MIME type text/plain. See https://www.chromestatus.com/feature/5629709824032768 for more details.
you should be using the useEmulator() after the firestore.settings({ experimentalAutoDetectLongPolling: true }).
code:ts
const db = firebase.firestore();
// NG
db.useEmulator("localhost", 8080);
db.settings({ experimentalForceLongPolling: true });
// OK
db.settings({ experimentalForceLongPolling: true });
db.useEmulator("localhost", 8080);
it works!
https://gyazo.com/6a561071ab7f9abd76a19a9ba9f12d45
experimentalForceLongPollingをtrueにする必要がある
useEmulatorする前にやる必要がある