Koa Router not working on production NextJS
thangly98 opened this issue · comments
Finn commented
Hi, The api link works normally in the dev version, but returns a 404 in production
node.js version: 14.16.0
npm/yarn and version: 1.22.5
@koa/router
version: 10.0.0
koa
version: ^2.13.1
Code sample (server.js):
const Koa = require('koa')
const cors = require('@koa/cors')
const next = require('next')
const Router = require('koa-router')
const nextRoutes = require('./next-routes')
const { join } = require('path')
const config = require('./config')
const port = parseInt(process.env.PORT, 10) || 3007
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = nextRoutes.getRequestHandler(app)
const koaBody = require('koa-body')
// const api = require('./koa/api');
const indexRoutes = require('./server/routes/index')
const axios = require('axios')
const Cookies = require('universal-cookie')
function isRoute(url) {
if (url.indexOf('/_next') === 0) return false
if (url.indexOf('/static') === 0) return false
return true
}
app.prepare()
.then(() => {
const server = new Koa()
const router = new Router()
router.get('*', async (context) => {
await handle(context.req, context.res)
context.respond = false
})
server.use(async (context, next) => {
context.res.statusCode = 200
await next()
})
// 미들웨어
server.use(koaBody({ multipart: true }))
server.use(
cors({
origin: '*',
allowMethods: ['GET', 'HEAD', 'PUT', 'POST', 'DELETE', 'OPTION', 'PATCH'],
allowHeaders: ['Content-Type', 'Authorization'],
exposeHeaders: ['Content-Length', 'Date', 'X-Request-Id'],
})
)
// server.use(passport.initialize());
// API
server.use(indexRoutes.routes())
server.use(router.routes())
server.use(handle)
server.listen(port, () => {
console.info(`> Ready on http://localhost:${port}`)
})
})
.catch((ex) => {
// console.warn(ex)
process.exit(1)
})