LoginSignup
10
5

More than 3 years have passed since last update.

Serverless Next.jsをCloud Functionsにデプロイする

Posted at

Next.jsとFirebaseで個人開発をしています。その際にNext.jsのexamplesを見ると従来のserver modeでの例はありましたが、Next.js 8で追加されたserverlessモードの例はなくちょっと困ったので、記事に残しておきます。

Serverless Next.js

next.config.jsにtarget: 'serverless'を指定すると有効になる。

ページ単位でビルドされ.next/serverless/pages以下に出力される。

pages/index.js => .next/serverless/pages/index.js

例えばNode.jsのhttpモジュールを使った際のコードは次のようになる。(公式サイトの例より)

const http = require('http')
const page = require('./.next/serverless/about.js')
const server = new http.Server((req, res) => page.render(req, res))
server.listen(3000, () => console.log('Listening on http://localhost:3000'))

Cloud Functions

以上のことを抑えてCloud Functions形式のコードを書くと次のようになる。
ビルド後のパスを指定して各ファイルごとにexportするのがポイント。

const onRequest = require('firebase-functions').https.onRequest

const index = require('./next/serverless/pages/index')
const about = require('./next/serverless/pages/about')

exports.index = onRequest((req, res) => index.render(req, res))
exports.about = onRequest((req, res) => about.render(req, res))

参考

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5