1. ホーム
  2. javascript

[解決済み】Cloud Functions for Firebaseで複数のファイルから複数の関数をデプロイするための構成は?

2022-04-12 16:17:06

質問

FirebaseのCloud Functionsを複数作成し、1つのプロジェクトから同時にデプロイしたい。また、各関数を別々のファイルに分けたいと思います。現在、次のようにindex.jsに両方を置くと、複数の関数を作成できる。

exports.foo = functions.database.ref('/foo').onWrite(event => {
    ...
});

exports.bar = functions.database.ref('/bar').onWrite(event => {
    ...
});

しかし、fooとbarを別々のファイルに置きたいのです。試しにこうしてみました。

/functions
|--index.js (blank)
|--foo.js
|--bar.js
|--package.json

foo.jsがある場所

exports.foo = functions.database.ref('/foo').onWrite(event => {
    ...
});

で、bar.jsは

exports.bar = functions.database.ref('/bar').onWrite(event => {
    ...
});

すべての関数をindex.jsに入れずに実現する方法はありますか?

どのように解決するのですか?

あ、Cloud Functions for Firebaseは普通にノードモジュールを読み込むので、これでうまくいきます。

の構造体です。

/functions
|--index.js
|--foo.js
|--bar.js
|--package.json

index.jsです。

const functions = require('firebase-functions');
const fooModule = require('./foo');
const barModule = require('./bar');

exports.foo = functions.database.ref('/foo').onWrite(fooModule.handler);
exports.bar = functions.database.ref('/bar').onWrite(barModule.handler);

foo.jsです。

exports.handler = (event) => {
    ...
};

bar.jsです。

exports.handler = (event) => {
    ...
};