| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- const Koa = require('koa')
- const app = new Koa()
- const views = require('koa-views')
- const json = require('koa-json')
- const onerror = require('koa-onerror')
- const bodyparser = require('koa-bodyparser')
- const logger = require('koa-logger')
- const cors = require('koa2-cors')
- // const koajwt = require('koa-jwt')
- const index = require('./routes/index')
- const users = require('./routes/users')
- const article = require('./routes/article')
- // error handler
- onerror(app)
- // middlewares
- app.use(bodyparser({
- enableTypes:['json', 'form', 'text']
- }))
- app.use(json())
- app.use(logger())
- app.use(require('koa-static')(__dirname + '/public'))
- // app.use((ctx, next) => {
- // return next().catch((err) => {
- // if (401 == err.status) {
- // ctx.status = 401;
- // ctx.body = 'Protected resource, use Authorization header to get access\n';
- // } else {
- // throw err;
- // }
- // });
- // });
- // app.use(koajwt({
- // secret: 'token'
- // }).unless({
- // path: [/^\/users\/login/, /^\/users\/register/, /^\/article/]
- // }))
- app.use(views(__dirname + '/views', {
- extension: 'pug'
- }))
- app.use(cors({
- origin: (ctx) => {
- return '*'
- },
- maxAge: 5,
- credentials: true,
- allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
- allowHeaders: ['Content-Type', 'Authorization', 'Accept'],
- exposeHeaders: ['WWW-Authenticate', 'Server-Authenticate']
- }))
- // logger
- app.use(async (ctx, next) => {
- const start = new Date()
- await next()
- const ms = new Date() - start
- console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
- })
- // routes
- app.use(index.routes(), index.allowedMethods())
- app.use(users.routes(), users.allowedMethods())
- app.use(article.routes(), article.allowedMethods())
- // error-handling
- app.on('error', (err, ctx) => {
- console.error('server error', err, ctx)
- });
- module.exports = app
|