質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Q&A

0回答

841閲覧

Firebase Functions+Firebase Hostingで、関数を呼び出す処理がdeploy後に「のみ」Internalエラーとなってしまう

kanata_x2

総合スコア11

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

0グッド

0クリップ

投稿2020/02/16 16:17

編集2020/02/18 11:38

前提・実現したいこと

Firebase Functionsの関数として

[関数A] firebase-adminを使用してfirestoreやstorageからデータを取得し、返却する。 onCallによる関数であるため、Hostingは行っていない。 [関数B] Next.jsによるSPA。 クライアント用のfirebaseを使用して関数Aを呼び出し、取得したデータを表示する。 Hostingも同時に行っている。

を実装しました。

発生している問題・エラーメッセージ

関数A、関数Bともにデプロイした後、関数Bのページを開いた際に関数Aを呼び出す箇所でInternal Error(code: internal)が返却されてしまいます。
(※エラーハンドリングを行っているため、関数B自体は最後まで実行されます)

関数Bのログ

Function execution started Billing account not configured. External network is not accessible and quotas are severely limited. Configure billing account to remove these restrictions { Error: internal at new HttpsErrorImpl (/srv/functions/build/serverless/pages/index.js:12232:28) at _errorForResponse (/srv/functions/build/serverless/pages/index.js:12327:12) at Service.<anonymous> (/srv/functions/build/serverless/pages/index.js:12712:33) at step (/srv/functions/build/serverless/pages/index.js:43717:27) at Object.next (/srv/functions/build/serverless/pages/index.js:43698:57) at fulfilled (/srv/functions/build/serverless/pages/index.js:43688:62) at process._tickCallback (internal/process/next_tick.js:68:7) code: 'internal', details: undefined } Function execution took 414 ms, finished with status code: 200

関数Aのログ

ローカル上でserveした関数Bから呼び出された場合

Function execution started Billing account not configured. External network is not accessible and quotas are severely limited. Configure billing account to remove these restrictions Function execution took 204 ms, finished with status code: 200

deploy後の関数Bから呼び出された場合

なし。「Function execution started」すら出力されていません。
呼び出し自体が行われていないと思われます。

関数Bの実装(Firebase周りのみ抜粋)

js

1import firebase from "firebase/app" 2import "firebase/functions" 3 4/** 5 * Firebaseを初期化する 6 */ 7export const initializeFirebase = ({ 8 FIREBASE_API_KEY, 9 FIREBASE_AUTH_DOMAIN, 10 FIREBASE_PROJECT_ID 11}) => { 12 if (firebase.apps.length) { 13 return 14 } 15 firebase.initializeApp({ 16 apiKey: FIREBASE_API_KEY, 17 authDomain: FIREBASE_AUTH_DOMAIN, 18 projectId: FIREBASE_PROJECT_ID 19 }) 20} 21 22/** 23 * Firebase functionsの関数を実行する 24 */ 25export const callFunction = async ({ 2627}) => { 28 try { 29 let callable = firebase 30 .app() 31 .functions(<リージョン名>) 32 .httpsCallable(<関数名>) 33 return await callable() // deploy後のみ、ここでエラー発生 34 } catch (error) { 35 console.log(error) 36 throw error 37 } 38}

試したこと

  • 関数A、関数B自体はそれぞれ正常に実行できることを確認しています。
  • 関数Aのみ先にデプロイし、ローカル上で関数Bをserveし動作確認を行った際は関数Aから正常にデータを取得することができていました。
  • 当初、関数Aと関数Bは別のリージョンにデプロイしており、それが原因かと考え同一のリージョン(us-central1)にデプロイし直しましたが、結果は変わりませんでした。

問題の発生した環境

  • Firebase Sparkプラン
  • Firestore、Storageのリージョン:asia-notherneast1
  • Functions上のnodeバージョン:10
  • npmの各パッケージのバージョン
    • "firebase": "7.8.2"
    • "firebase-admin": "8.9.2"
    • "firebase-functions": "3.3.0"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問