elsoul / skeet

🚀 Open-Source TypeScript Serverless Framework. It supports all kinds of application development, from small-scale tasks to global full-stack scaling💃
https://skeet.dev/
Apache License 2.0
600 stars 22 forks source link

can't create UserChatRoom on Firestore #98

Closed euledge closed 11 months ago

euledge commented 11 months ago

OpenAI チャットルームで、チャットを行うとエラーになります

発生バージョン 1.6.4 Next-Firesore版 Firebase emulatorで実行 正確には追っていませんが2,3日前のバージョンでも発生しています。

状況

サインアップ時にFirestoreにUserは作成できている。 チャットルーム作成をしても FirestoreにChatRoomのデータができていない。 チャットルーム作成の時にチャットルーム作成したというメッセージは出ています

image

https://github.com/elsoul/skeet-cli/assets/1209580/7bc73a59-cb41-449d-9360-f14a7a83b1f5

euledge commented 11 months ago

skeet init --login で 自分のfirebase プロジェクトを指定したのですが firebaseConfig.tsにProject IDの反映がされないためfirestoreへの書き込みができていないものと思います。

以下の状況でした

それぞれのfirebaseConfig.tsに対してprojectIdを skeetOptions.json のものに変更することで UserChatRoomが作成されるようになりました。

image

サインアップ時にUserが作成できるのは、skeetOptionsを読んでいるからだと推察します https://github.com/elsoul/skeet-next/blob/768c966ad312d8d6bb47529555509aca3a2f591a/functions/skeet/src/routings/auth/authOnCreateUser.ts#L7

本Issueと#97 と合わせて修正されれば、最初のセットアップガイダンス通りに行うことで誰でも AIチャットまで体験できそうです。

image

euledge commented 11 months ago

しかし、よく考えるとprojectIdの書き換えはできてもfirebaseConfigのほかの値は取得できない気がしますのでフレームワークで書き換えるよりも、手順としてガイドしてあげたほうが良いのかもしれません。

KishiTheMechanic commented 11 months ago

こちらですが、発生条件がよくわかっていないのですが、エミュレーターが別のプロジェクトIDで起動してしまっていることがありそうです。 skeet s をし直すと治るときが多いです。

内部的な話をしますと、UserChatRoomが作成できないかぎり、ChatRoomの表示ができないので、Firestoreに書き込みはできていたはずです。ただ、エミュレータが違うプロジェクトidで起動されてしまっていた可能性があります。違うプロジェクトidで起動されていると、エミュレータ上ではデータが見えないのですが、Next.jsアプリからは使えている状態になります。 (ここが謎なのですが、僕の環境の場合、firebaseConfig.tsがどちらも同じ状況にも関わらず起きていました。) 残ったプロセスの問題など裏でなにか起きているのかもしれません。このあたり再現できるようになれば改善できると思いますので、ぜひ情報共有いただければ嬉しいです!

ルーム作成はfirestoreにデータを保存していますが、チャットを起動する時にfirebase functionsを呼び出していて、firebase authのデータを元にそれぞれが動くのですが、この時にprojectIdが違うことによって何かエラーが起きている可能性があります。 (本件、色々な問題が重なっている可能性が高いです)

コンフィグの書き換えに関してはskeet init --login ではなく、skeet initではfirebaseConfigが書き換わる状態だったので、 --loginオプションでも確認して、書き換えられるように対応します!

KishiTheMechanic commented 11 months ago

コンフィグ書き換え部分のコードを読み直してみたのですが、skeet init も --loginオプションも変わらず実行しているように見えました... 何かエラーが起きていたりしましたでしょうか? projectIdやapp id、appname等の組み合わせや入力によっては例外が起きる可能性があるかもしれません。

こちらのアプリはskeet createも v1.6.4で行ったものでしたでしょうか?

最新版でskeet createを行い、skeet initした時にfirebaseConfig.tsが無事書き換えられることをご確認いただけるととても助かります! 僕の手元の環境では、firebaseConfigの書き換えがされていました。 もしエラーが出る場合の条件も知りたいです!

いつもありがとうございます! 引き続きよろしくお願いいたします。

euledge commented 11 months ago

以下ご報告です。

node ➜ /workspaces/skeetdev $ skeet --version
1.6.6
node ➜ /workspaces/skeetdev $ skeet create app-166
? Select Template of Skeet Next.js (React) - Firestore

sceet create 直後の firebaseConfig,ts, skeetOptions.json

const firebaseConfig = {
  apiKey: 'AIzaSyATSdJHATWU04LKfrgzen1sFCwwsl93D8U',
  authDomain: 'skeet-next.firebaseapp.com',
  projectId: 'skeet-next',
  storageBucket: 'skeet-next.appspot.com',
  messagingSenderId: '1037692178989',
  appId: '1:1037692178989:web:5bb909c7b0cef7600e9ea4',
  measurementId: 'G-8BZJ1C7RW1',
}
export default firebaseConfig
{
  "name": "app-166",
  "projectId": "skeet-next",
  "region": "europe-west6",
  "appDomain": ""
}

skeet init 実行結果

projectIDは、実際のものを置換してます 今回(ver 1.6.6)で初めて以下のエラーになりました。昨日の1.6.5では出なかったです。 (skeet init ではなく skeet init --loginを行っていましたが)

$ skeet init
? What's your GCP Project ID [my-project-id]
? What's your Firebase Project ID [my-project-id]
? Select Regions to deploy asia-northeast1

また以下のリンククリックしても正しくアクセスできています。 Firestore: https://console.firebase.google.com/project/[my-project-id]/firestore Firebase Auth: https://console.firebase.google.com/project/[my-project-id]/authentication

⚠️ Please make sure if you create Firestore & FirebaseAuth ⚠️

Click the link to check 👇
Firestore: https://console.firebase.google.com/project/[my-project-id]/firestore
Firebase Auth: https://console.firebase.google.com/project/[my-project-id]/authentication

Cloud Storage: https://console.firebase.google.com/project/[my-project-id]/storage

📗 Doc: https://skeet.dev/doc/backend/initial-deploy/

? Are you sure if you already set them up? no
Please setup Firestore before running this command. 
https://console.firebase.google.com/project/${projectId}/firestore
/usr/local/share/npm-global/lib/node_modules/@skeet-framework/cli/dist/index.js:861
`);return s!==-1&&(g=tde(g,h,p,s)),p+g+h};Object.defineProperties($1.prototype,Fm);var Cdt=$1(),iro=$1({level:rde?rde.level:0});var tt=Cdt;var cde=lt(pde());var AN=[{left:"\u{1F57A}",right:"\u{1F483}"},{left:"\u{1F483}",right:"\u{1F57A}"},{left:"\u{1F4B0}",right:"\u{1F4B0}"},{left:"\u2692\uFE0F",right:"\u2692\uFE0F"},{left:"\u{1F528}",right:"\u{1F527}"},{left:"\u{1F477}",right:"\u{1F477}"}];var _N=["asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-southeast1","asia-southeast2","australia-southeast1","europe-central2","europe-west1","europe-west2","europe-west3","europe-west6","northamerica-northeast1","southamerica-east1","us-central1","us-east1","us-east4","us-west1","us-west2","us-west3","us-west4"];var Ga;(n=>(n.requireRepoName=e=>/.+\/.+/.test(e)?!0:"This is not GitHub Repo Name!It must be repoOwner/repoName",n.requireDomainName=e=>/.+\..+/.test(e)?!0:"This is not Domain Name!It must be example.com",n.requireLetterAndNumber=e=>/\w/.test(e)&&/\d/.test(e)?!0:"Password need to have at least a letter and a number",n.projectQuestions=[{type:"input",name:"projectId",message:"What's your GCP Project ID",default(){return"skeet-app-123456"}},{type:"input",name:"fbProjectId",message:"What's your Firebase Project ID",default(){return"skeet-app-123456"}},{type:"list",message:"Select Regions to deploy",name:"region",choices:[new Jt.Separator(" \u{1F30F} Regions \u{1F30F} "),..._N.map(e=>({name:e}))],validate(e){return e.length<1?"You must choose at least one service.":!0}}],n.projectRegionQuestions=[{type:"input",name:"projectId",message:"What's your GCP Project ID",default(){return"skeet-app-123456"}},{type:"list",message:"Select Regions to deploy",name:"region",choices:[new Jt.Separator(" \u{1F30F} Regions \u{1F30F} "),..._N.map(e=>({name:e}))],validate(e){return e.length<1?"You must choose at least one service.":!0}}],n.templateQuestions=[{type:"list",message:"Select Template of Skeet",name:"template",choices:[new Jt.Separator(" Templates "),{name:"Next.js (React) - GraphQL"},{name:"Next.js (React) - Firestore"},{name:"Expo (React Native) - Firestore"},{name:"Solana Mobile Stack (Expo) + Web (Next.js) - Firestore"}],validate(e){return e.length<1?"You must choose at least one template.":!0}}],n.needDomainQuestions=[{type:"list",message:"Do you want to setup your domain?",name:"isNeedDomain",choices:[new Jt.Separator(tt.white()),"yes(needs your domain)","no"]}],n.githubRepoQuestions=[{type:"input",name:"githubRepo",message:"What's your GitHub Repo Name",validate:n.requireRepoName,default(){return"elsoul/skeet-app"}}],n.domainQuestions=[{type:"input",name:"appDomain",message:"What's your domain address for App",validate:n.requireDomainName,default(){return"app.skeet.dev"}},{type:"input",name:"nsDomain",message:"What's your domain address for Domain Name Server",validate:n.requireDomainName,default(){return"skeet.dev"}},{type:"input",name:"lbDomain",message:"What's your subdomain address for Load Balancer",validate:n.requireDomainName,default(){return"lb.skeet.dev"}}],n.sqlPasswordQuestions=[{type:"password",message:"Enter your CloudSQL password",name:"password1",mask:"*",validate:n.requireLetterAndNumber},{type:"password",message:"Confirm your password",name:"password2",mask:"*",validate:n.requireLetterAndNumber}],n.checkIfFirebaseSetup=async e=>{try{await Jt.prompt([{type:"list",message:"Are you sure if you already set them up?",name:"firebase",choices:[new Jt.Separator(tt.white()),"yes","no"]}]).then(async o=>{if(o.firebase==="no")throw Ye.error("Please setup Firestore before running this command. \nhttps://console.firebase.google.com/project/${projectId}/firestore"),new Error("Firestore is not setup")})}catch(t){throw new Error(`checkIfFirebaseSetup: ${t}`)}}))(Ga||={});var Ye;(I=>(I.successHex=tt.hex("#39A845"),I.warningHex=tt.hex("#FFD02E"),I.errorHex=tt.hex("#B5332E"),I.syncHex=tt.hex("#3073B7"),I.greyHex=tt.hex("#BEBDBD"),I.indigoHex=tt.hex("#3950A0"),I.pinkHex=tt.hex("#D8A1C4"),I.syncSpinner=async B=>{let F=AN[Math.floor(Math.random()*AN.length)],J=new cde.Spinner(` ${F.left} `+tt.white(B)+" %s");try{return J.setSpinnerString(18),J.start(),J}catch(q){throw J.stop(!0),new Error(`syncSpinner Error: ${q}`)}},I.normal=B=>{console.log(tt.white(B))},I.success=B=>{console.log((0,I.successHex)(B))},I.warning=B=>{console.log((0,I.warningHex)(B))},I.error=B=>{console.log((0,I.errorHex)(B))},I.errorString=B=>(0,I.errorHex)(B),I.sync=B=>{console.log((0,I.syncHex)(B))},I.grey=B=>{console.log((0,I.greyHex)(B))},I.successCheck=B=>{let F=(0,I.successHex)("\u2714"),J=tt.white(B),q=`${F} ${J} \u{1F389}`;console.log(q)},I.skeetAA=()=>{let B=I.syncHex("   _____ __ __ ____________"),F=I.errorHex("______"),J=I.syncHex("  / ___// //_// ____/ ____/"),q=I.errorHex("_  __/"),V=I.syncHex("  \\__ \\/ ,<  / __/ / __/ "),z=I.errorHex("  / / "),H=I.syncHex(" ___/ / /| |/ /___/ /___ "),Y=I.errorHex(" / /    "),X=I.syncHex("/____/_/ |_/_____/_____/"),te=I.errorHex(" /_/    \u{1F6E0}\uFE0F\u{1F6E0}\uFE0F");console.log(`

Error: checkIfFirebaseSetup: Error: Firestore is not setup
    at n.checkIfFirebaseSetup (/usr/local/share/npm-global/lib/node_modules/@skeet-framework/cli/dist/index.js:861:3731)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async I.confirmFirebaseSetup (/usr/local/share/npm-global/lib/node_modules/@skeet-framework/cli/dist/index.js:891:74)
    at async a0e (/usr/local/share/npm-global/lib/node_modules/@skeet-framework/cli/dist/index.js:1599:1267)
    at async Vf.<anonymous> (/usr/local/share/npm-global/lib/node_modules/@skeet-framework/cli/dist/index.js:1599:2496)
    at async Vf.parseAsync (/usr/local/share/npm-global/lib/node_modules/@skeet-framework/cli/dist/index.js:15:4063)
KishiTheMechanic commented 11 months ago

ありがとうございます!!

こちらのfirestoreとfirebase authの方をFirebaseのコンソール上で初期設定を完了していただいたあとに、 ? Are you sure if you already set them up? の質問に対してyesと答えてください🙏

noを選んだときのエラーについて少し見づらくなっているので、そこは改善予定です!

skeet init、 skeet init --login どちらを選んでも、firebaseConfigが正しく上書きされるはずなのですが...!

euledge commented 11 months ago

ver 1.6.6 でも skeet init --login を行ったところエラーにはなりませんでした。

ただし、firebaseConfig.tsの書き換えは行われませんでした。

skeet init前に skeet s を立ち上げていますが、この時のfirebaseConfig.tsはデフォルトの状態だと思います。 これはあまり関係ないでしょうか?

euledge commented 11 months ago

? Are you sure if you already set them up? の質問に対してyesと答えてください🙏

yesの場合は githubのリポジトリ,dns,lbなど設定が必要ですよね。

最初の段階ではまだリポジトリやdnsなど決まっていない段階だったのでnoを選択しておりました。

KishiTheMechanic commented 11 months ago

なるほど、、、なぜかその状況が再現できず、こちらではskeet init --loginするとfirebaseConfig.tsが更新されます。 projectIdは、見た目と違うことがある 例えば、skeet-demoというものを作っても実際はskeet-demo-387293 のように文字列が追加されていることがあります。 そういう特殊なパターンとかでもなさそうですか?

コード的にも--loginのオプション時にも変わらず、firebaseConfigをダウンロードしてファイルに更新するようになっています。

もしかしたら一度 npm uninstall -g @skeet-framework/cli としていただき、skeet-cliを再インストールしてみていただくことは可能ですか?

一応テストしてみたログを下記に載せますので、これと違うようなログが出力されていたら教えてください🙏

➜  test-skeet-app skeet init --login
? What's your GCP Project ID test-skeet-app
? What's your Firebase Project ID test-skeet-app
? Select Regions to deploy asia-northeast1

Visit this URL on this device to log in:
https://accounts.google.com/o/oauth2/auth?client_id=563584335869-fgrhgmd47bqnekij5i8b5pr03ho849e6.apps.googleusercontent.com&scope=email%20openid%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloudplatformprojects.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Ffirebase%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&response_type=code&state=709988579&redirect_uri=http%3A%2F%2Flocalhost%3A9005&login_hint=s.kishi%40elsoul.nl

Waiting for authentication...

✔  Success! Logged in as s.kishi@elsoul.nl
Now using project test-skeet-app

✔ Successfully Updated skeet-cloud.config.json 🎉
- Preparing the list of your Firebase apps
✔ Preparing the list of your Firebase apps
- Creating your Web app
✔ Creating your Web app
App ID: 1:995954873410:web:ffcb947cc7a0cee74e49db
✔  Applied hosting target test-skeet-app to test-skeet-app

Updated: test-skeet-app (test-skeet-app)
- Downloading configuration data of your Firebase WEB app
✔ Downloading configuration data of your Firebase WEB app
✔ Successfully Updated firebase.json 🎉
✔ File './lib/firebaseAppConfig/test-skeet-app.ts' has been created successfully 🎉
✔ File copied: ./lib/firebaseConfig.ts 🎉
✔ File copied: ./functions/skeet/src/lib/firebaseConfig.ts 🎉
gcloud iam service-accounts describe test-skeet-app@test-skeet-app.iam.gserviceaccount.com --project test-skeet-app --format="value(email)"
ERROR: (gcloud.iam.service-accounts.describe) NOT_FOUND: Unknown service account
Service account does not exist, creating new one...
Created service account [test-skeet-app].

Updates are available for some Google Cloud CLI components.  To install them,
please run:
  $ gcloud components update

✔ Service account created successfully 🎉
Operation "operations/acat.p2-995954873410-b66670ea-bfce-4742-b4a0-76d768f64a49" finished successfully.
Operation "operations/acat.p2-995954873410-3cc5a666-14d5-47d7-886d-762e6e6d94c9" finished successfully.
Operation "operations/acat.p2-995954873410-2bddb353-e559-4080-993e-b1f489c0e7d7" finished successfully.
Updated IAM policy for project [test-skeet-app].
bindings:
- members:
  - serviceAccount:test-skeet-app@test-skeet-app.iam.gserviceaccount.com
  role: roles/aiplatform.admin
- members:
  - serviceAccount:995954873410@cloudservices.gserviceaccount.com
  - serviceAccount:test-skeet-app@appspot.gserviceaccount.com
  role: roles/editor
- members:
  - serviceAccount:firebase-service-account@firebase-sa-management.iam.gserviceaccount.com
  - serviceAccount:service-995954873410@gcp-sa-firebase.iam.gserviceaccount.com
  role: roles/firebase.managementServiceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/firebase.sdkAdminServiceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/firebaseauth.admin
- members:
  - serviceAccount:service-995954873410@firebase-rules.iam.gserviceaccount.com
  role: roles/firebaserules.system
- members:
  - serviceAccount:service-995954873410@gcp-sa-firebasestorage.iam.gserviceaccount.com
  role: roles/firebasestorage.serviceAgent
- members:
  - serviceAccount:service-995954873410@gcp-sa-firestore.iam.gserviceaccount.com
  role: roles/firestore.serviceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/iam.serviceAccountTokenCreator
- members:
  - user:s.kishi@elsoul.nl
  role: roles/owner
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/storage.admin
etag: BwYEaOzRNVc=
version: 1
Updated IAM policy for project [test-skeet-app].
bindings:
- members:
  - serviceAccount:test-skeet-app@test-skeet-app.iam.gserviceaccount.com
  role: roles/aiplatform.admin
- members:
  - serviceAccount:test-skeet-app@test-skeet-app.iam.gserviceaccount.com
  role: roles/cloudtranslate.admin
- members:
  - serviceAccount:995954873410@cloudservices.gserviceaccount.com
  - serviceAccount:test-skeet-app@appspot.gserviceaccount.com
  role: roles/editor
- members:
  - serviceAccount:firebase-service-account@firebase-sa-management.iam.gserviceaccount.com
  - serviceAccount:service-995954873410@gcp-sa-firebase.iam.gserviceaccount.com
  role: roles/firebase.managementServiceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/firebase.sdkAdminServiceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/firebaseauth.admin
- members:
  - serviceAccount:service-995954873410@firebase-rules.iam.gserviceaccount.com
  role: roles/firebaserules.system
- members:
  - serviceAccount:service-995954873410@gcp-sa-firebasestorage.iam.gserviceaccount.com
  role: roles/firebasestorage.serviceAgent
- members:
  - serviceAccount:service-995954873410@gcp-sa-firestore.iam.gserviceaccount.com
  role: roles/firestore.serviceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/iam.serviceAccountTokenCreator
- members:
  - user:s.kishi@elsoul.nl
  role: roles/owner
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/storage.admin
etag: BwYEaOzq2HQ=
version: 1
Updated IAM policy for project [test-skeet-app].
bindings:
- members:
  - serviceAccount:test-skeet-app@test-skeet-app.iam.gserviceaccount.com
  role: roles/aiplatform.admin
- members:
  - serviceAccount:test-skeet-app@test-skeet-app.iam.gserviceaccount.com
  role: roles/cloudtranslate.admin
- members:
  - serviceAccount:995954873410@cloudservices.gserviceaccount.com
  - serviceAccount:test-skeet-app@appspot.gserviceaccount.com
  role: roles/editor
- members:
  - serviceAccount:firebase-service-account@firebase-sa-management.iam.gserviceaccount.com
  - serviceAccount:service-995954873410@gcp-sa-firebase.iam.gserviceaccount.com
  role: roles/firebase.managementServiceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/firebase.sdkAdminServiceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/firebaseauth.admin
- members:
  - serviceAccount:service-995954873410@firebase-rules.iam.gserviceaccount.com
  role: roles/firebaserules.system
- members:
  - serviceAccount:service-995954873410@gcp-sa-firebasestorage.iam.gserviceaccount.com
  role: roles/firebasestorage.serviceAgent
- members:
  - serviceAccount:service-995954873410@gcp-sa-firestore.iam.gserviceaccount.com
  role: roles/firestore.serviceAgent
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/iam.serviceAccountTokenCreator
- members:
  - serviceAccount:test-skeet-app@test-skeet-app.iam.gserviceaccount.com
  role: roles/iam.serviceAccountUser
- members:
  - user:s.kishi@elsoul.nl
  role: roles/owner
- members:
  - serviceAccount:firebase-adminsdk-y7cf0@test-skeet-app.iam.gserviceaccount.com
  role: roles/storage.admin
etag: BwYEaO0FGkk=
version: 1
KishiTheMechanic commented 11 months ago

特にこのあたりで該当の書き換えを行っていますので、このログが無ければ、そのあたりで何かが起きていそうです!

✔ Successfully Updated skeet-cloud.config.json 🎉
- Preparing the list of your Firebase apps
✔ Preparing the list of your Firebase apps
- Creating your Web app
✔ Creating your Web app
App ID: 1:995954873410:web:ffcb947cc7a0cee74e49db
✔  Applied hosting target test-skeet-app to test-skeet-app

Updated: test-skeet-app (test-skeet-app)
- Downloading configuration data of your Firebase WEB app
✔ Downloading configuration data of your Firebase WEB app
✔ Successfully Updated firebase.json 🎉
✔ File './lib/firebaseAppConfig/test-skeet-app.ts' has been created successfully 🎉
✔ File copied: ./lib/firebaseConfig.ts 🎉
✔ File copied: ./functions/skeet/src/lib/firebaseConfig.ts 🎉
euledge commented 11 months ago

Firebaseのプロジェクトを作成しなおして、 skeet init を行ったところfirebaseConfig.tsの書き換えができるようになりました。

こちらのミスなのですが、最初にfirestore作成したときにデフォルトのリージョンnam5(us-central)のまま作成してしまいskeet-initの際のリージョン選択で asia-northeast1にしていたことが原因でした。

ちなみにマルチリージョンだと skeet init のリージョン選択の候補に出てこないようです。 image

今回マルチリージョンにしたいわけではないので、これで私のほうは解決といたします。

KishiTheMechanic commented 11 months ago

おおおお、良かったです🙌🚀🔥

このへん気づきにくい部分が多いですよね、、、 クラウドの設定は意外と面倒な上にビタなので、できるだけskeetではそのあたりを改善していきたいと思っています!

いつもご協力ありがとうございます。 引き続きよろしくお願いいたします!

euledge commented 11 months ago

@KishiTheMechanic もう一つ、エラー条件に気が付きました。 この処理は、Firebaseのアプリが無い状態の時にしか実行されないようです。 今回、いろいろなskeetのバージョンで同じFirebaseプロジェクトに対して試していたため すでにWebアプリがFairebase上に作成されている状態で skeet init --loginをしておりました

この場合 Creating your Web app だけではなくDownloading configuration data of your Firebase WEB appも行われないようです。試しに firebaseコンソールで webアプリを削除して skeet init を行ったらfirebaseConfig.jsonダウンロードされました

Webアプリが無い状態

✔ Successfully Updated skeet-cloud.config.json 🎉
- Preparing the list of your Firebase apps
✔ Preparing the list of your Firebase apps
- Creating your Web app
✔ Creating your Web app
App ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
✔  Applied hosting target xxxxxxxxxxxxxxxx toxxxxxxxxxxxxxxxxxx

Updated: xxxxxxxxxxxxxxx(xxxxxxxxxxxxxxxxx)
- Downloading configuration data of your Firebase WEB app
✔ Downloading configuration data of your Firebase WEB app
✔ Successfully Updated firebase.json 🎉
✔ File './lib/firebaseAppConfig/xxxxxxxxxxxxxxxxxxxxxxxxx.ts' has been created successfully 🎉
✔ File copied: ./lib/firebaseConfig.ts 🎉
✔ File copied: ./functions/skeet/src/lib/firebaseConfig.ts 🎉
KishiTheMechanic commented 11 months ago

@euledge ありがとうございます! こちらですが、skeet initはプロジェクトのセットアップ向けで、2回目以降にもし流されてしまった場合に誤作動を起こさないように(ここでは例えば意図しないWebアプリが増殖してしまわないように)してあります!

おそらくテストとして行っていただいていた特殊ケースのために、すでにWebアプリが存在していたことと思いますので、

Default Firebase App '${appDisplayName}' already exists. Skipping the firebaseConfig files creating process... Delete the Firebase webapp on the web console if you want to create a new one. Then run 'skeet init' again. It will create the new webapp and the firebaseConfig files.

とログを出すことでエラーに気づきやすくなればと思います! v1.6.7で反映させますね!