【Firebase】CloudFunctionsでメンテナンス中画面にリダイレクトさせる
今回は、下記のようなCloudFunctionsdeNext.jsがホストされている状態を想定してメモしています👷♀️
const { join } = require('path') const { https } = require('firebase-functions') const { default: next } = require('next') const nextjsDistDir = join('src', require('./src/next.config.js').distDir) const nextjsServer = next({ dev: false, conf: { distDir: nextjsDistDir, }, }) const nextjsHandle = nextjsServer.getRequestHandler() exports.nextjsFunc = https.onRequest((req, res) => { return nextjsServer.prepare().then(() => nextjsHandle(req, res)) })
Ref: https://github.com/vercel/next.js/blob/canary/examples/with-firebase-hosting/firebaseFunctions.js
結論
https.onRequest
のコールバックで渡される、Response
からリダイレクトをすることができます。
const { join } = require('path') const { https } = require('firebase-functions') const { default: next } = require('next') const nextjsDistDir = join('src', require('./src/next.config.js').distDir) const nextjsServer = next({ dev: false, conf: { distDir: nextjsDistDir, }, }) const nextjsHandle = nextjsServer.getRequestHandler() exports.nextjsFunc = https.onRequest((req, res) => { const maintenanceUrl = `${req.protocol}://${req.hostname}/maintenance` if (サービスを停止するための条件) { return res.redirect(maintenanceUrl) } return nextjsServer.prepare().then(() => nextjsHandle(req, res)) })
てな感じ本日も以上となります🍺