app.js 1.01 KB
const Koa = require('koa');
const Promise = require('bluebird');
const Redis = require('ioredis');
const bodyParser = require('koa-bodyparser');
const config = require('config');
const mysql = require('mysql');
const pool = mysql.createPool(config.get('dbConfig'));
const redis = new Redis(config.get('cacheConfig'));

const utils = require('./utils/utils');
const routes = require('./controller');
const { logger } = utils;
const app = new Koa();

app.use(
  bodyParser({
    enableTypes: ['json', 'form', 'text'],
    extendTypes: {
      text: ['text/xml', 'application/xml']
    }
  })
);
app.use(async (ctx, next) => {
  ctx.pool = Promise.promisifyAll(pool);
  ctx.redis = redis;

  try {
    await next();
  } catch (e) {
    logger.error(`【服务器出错】:${JSON.stringify(e.message)}`);

    ctx.status = 500;
    ctx.body = '服务器出错';
  }
});

routes.forEach(route => {
  app.use(route.routes()).use(route.allowedMethods());
});

app.listen(config.get('port'), () => {
  logger.info('server is running!');
});