問題
ssr対応したNuxtアプリをGAEでデプロイした際に、 cannot get /
が表示される。
再更新するとアプリ画面を開くことができる。
解決策
server.jsの記述を一部変更して解決。
const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()
const host = process.env.HOST || '0.0.0.0'
const port = process.env.PORT || 3000
app.set('port', port)
// Import and Set Nuxt.js options
const config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')
async function start() {
// Init Nuxt.js
const nuxt = new Nuxt(config)
// Build only in dev mode
if (config.dev) {
const builder = new Builder(nuxt)
await builder.build()
}
// Give nuxt middleware to express
app.use(nuxt.render)
// Listen the server
app.listen(port, host)
consola.ready({
message: `Server listening on http://${host}:${port}`,
badge: true
})
}
start()
app.use(nuxt.render)
の部分を以下に変更した。
app.use(async (req, res, next) => {
await nuxt.ready()
nuxt.render(req, res, next)
})