備忘録。
moduleAとmoduleBをindex.tsで読み込みre:exportする。
moduleA.ts
import * as functions from "firebase-functions";
export const helloWorldA = functions.https.onRequest((request, response) => {
functions.logger.info("Hello logs! I'm from module A");
response.send("Hello from module A");
});
export const waitFunction = functions.https.onRequest(async (request, response)=>{
functions.logger.info("waiting...");
await new Promise((resolve)=>setTimeout(resolve, 3000));
functions.logger.info("done!");
response.send("ok");
});
moduleB.ts
import * as functions from "firebase-functions";
export const helloWorldB = functions.https.onRequest((request, response) => {
functions.logger.info("Hello logs! I'm from module B");
response.send("Hello from module B");
});
index.ts
import * as functions from "firebase-functions";
export * as moduleA from "./moduleA";
export * as moduleB from "./moduleB";
exportでas句を用いなければunpackしてexportできる。
動作テストにはfunctions:shellを用いると良い。デフォルトでnpm run shellでビルドと同時にできる。
ちなみにrequire句を用いたりすると型情報が失われるので注意。
typescriptのexportについては下記を参考。
TypeScript: 38の具体例から学ぶnamed export