[小ネタ] Nuxt on AWS Lambda では serverMiddleware 使えばいいよねって話


かなりの小ネタです。

aws-serverless-express を使うと Nuxt が Lambda で動くというのは既出記事でたくさんあるんですけど、そのほとんどが公式の通りに以下の様な実装になってます。

const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware')
app.use(awsServerlessExpressMiddleware.eventContext())

aws-serverless-express/middleware のソースコードを読んでみたら、普通にNuxtの serverMiddleware で動きそうだったため、やってみたら動きましたとさ。

middleware/aws-serverless.js
const middleware = require('aws-serverless-express/middleware')
module.exports = middleware.eventContext() // わずか 2 行
nuxt.config.js
module.exports = {
  serverMiddleware: ['~/middleware/aws-serverless']
}

ちなみに、ローカルで動かしているときも「API Gateway からのリクエストじゃないよ」というログを吐くだけで悪さをしないので、「AWS 環境だったら読み込む」みたいな制御も不要です。

ちゃんちゃん。