概要
- Firebase Cloud functionsで、Firestoreを利用している
- 当初は、index.jsに関数定義していた
- 複数関数定義する必要があったので、関数ごとにファイル分割した
- 1回目の関数実行時は特に問題ないが、2回目以降の呼び出し時に以下のエラーが発生 (初期化は1回にしなさいとのこと)
The default Firebase app already exists. This means you called initializeApp() more than once without providing an app name as the second argument. In most
cases you only need to call initializeApp() once. But if you do want to initialize multiple apps, pass a second argument to initializeApp() to give each app a unique name.
エラー発生時のコード
const foo = require('./foo')
const bar = require('./bar')
exports.foo = foo.hoge
exports.bar = bar.fuga
const functions = require('firebase-functions');
const admin = require('firebase-admin')
exports.hoge = functions.region('asia-northeast1').https.onCall(async (data, context) => {
admin.initializeApp()
const fireStore = admin.firestore()
})
const functions = require('firebase-functions');
const admin = require('firebase-admin')
exports.fuga = functions.region('asia-northeast1').https.onCall(async (data, context) => {
admin.initializeApp()
const fireStore = admin.firestore()
})
エラー解決用に修正したコード
const foo = require('./foo')
const bar = require('./bar')
exports.foo = foo.hoge
exports.bar = bar.fuga
const admin = require('firebase-admin');
admin.initializeApp();
const fireStore = admin.firestore();
module.exports = {
fireStore,
};
const functions = require('firebase-functions');
const { fireStore } = require('./firestore')
exports.hoge = functions.region('asia-northeast1').https.onCall(async (data, context) => {
})
const functions = require('firebase-functions');
const { fireStore } = require('./firestore')
exports.fuga = functions.region('asia-northeast1').https.onCall(async (data, context) => {
})