Google Cloud Functions で Express を使用する
Google App Engine で Node.js + Express + Pugを使って、簡単なアプリを書こうと思ったりしたのだが、サーバー側はAPIにしようとすると、Firebase + Angular に慣れてしまっているので、画面側を書くのが非常に面倒くさい。やはり、Firebaseが全て揃っていて便利。
Coud Functions をGAEのように利用できればやりたいことは達成できる。
肝心の無料枠にもFunctions対応している(細かい話はわからないが十分余裕がありそうな雰囲気)なので、firebase init でFirebaseプロジェクトを作成し、functions ディレクトリの中で、
1.インストール
express と TypeScript 用の型情報をインストール。
$ npm install --save express $ npm install --save-dev @types/express
2.実装
index.ts で、Express のルーターを、Functions として公開する。
import * as functions from 'firebase-functions'; import * as express from 'express'; const app: express.Express = express(); const router: express.Router = express.Router() app.use(router); router.get('/test', (req, res) => { res.send('TEST!'); }); export const api = functions.https.onRequest(app);
3.エミュレータで実行
firebase emulators:start で、エミュレータが実行される。
package.json に定義されているので、npm run serve を実行する
$ npm install -g firebase-tools $ cd functions $ npm run serve
Functions の エンドポイント api へのリンクが起動ログに表示されている
/api/teset 呼び出しで、Expressに処理され結果が出力された。OK