Mon Oct 15 2018
Copied to clipboard! Copy reply
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

const Koa = require('koa')
const { Nuxt, Builder } = require('nuxt')

const app = new Koa()
const port = process.env.PORT || 3000


// Import and Set Nuxt.js options
let config = require('../nuxt.config.js')
config.dev = process.env.NODE_ENV !== 'production'


  // Instantiate nuxt.js
  const nuxt = new Nuxt(config)

  if (config.dev) {
    new Builder(nuxt).build()
      .then(listen)
      .catch((error) => {
        console.error(error)
        process.exit(1)
      })
  }
  else
  {
    app.use(ctx => {
      ctx.status = 200 // koa defaults to 404 when it sees that status is unset
  
      return new Promise((resolve, reject) => {
        ctx.res.on('close', resolve)
        ctx.res.on('finish', resolve)
        nuxt.render(ctx.req, ctx.res, promise => {
          // nuxt.render passes a rejected promise into callback on error.
          promise.then(resolve).catch(reject)
        })
      })
    })
  }

  

  app.listen(port)