UNPKG

dflzm

Version:

x

69 lines (59 loc) 1.9 kB
const Koa = require('koa') const path = require('path') const serve = require('koa-static') const onerror = require('koa-onerror') const cors = require('kcors') const bodyParser = require('koa-bodyparser') const Webpack = require('webpack') const webpackMiddleware = require('koa-webpack') // (node:59920) MaxListenersExceededWarning: \ // Possible EventEmitter memory leak detected. 11 uncaughtException listeners added. \ // Use emitter.setMaxListeners() to increase limit // require('events').EventEmitter.prototype._maxListeners = 100 const webpackConfig = require('../build/webpack.config') const appConfig = require('../config/app') const logger = require('../library/logger') const rsp = require('../library/rsp') const sql = require('../library/sql') const router = require('../server/route') const render = require('../library/render') const app = new Koa() const port = process.env.PORT || appConfig.port || 3040 if (process.env.NODE_ENV === 'wds') { webpackMiddleware({ compiler: Webpack(webpackConfig), config: webpackConfig, }) .then((middleware) => { app.use(middleware) }) } app.use(cors()) app.use(bodyParser({ extended: true })) app.use(serve(path.resolve(__dirname, '../asset'))) app.use(async (ctx, next) => logger(ctx, next, app)) app.use(async (ctx, next) => sql(ctx, next, app)) app.use(async (ctx, next) => rsp(ctx, next, app)) app.use(router()) app.use(async (ctx, next) => { if (ctx.path.match(/^\/api/)) { const route = await router()(ctx, next) return route } const rendering = await render(ctx, next) return rendering }) if (process.env.NODE_ENV === 'development') { onerror(app) } app.on('error', (e, ctx) => ctx.logger.error(e)) if (process.env.NODE_ENV === 'test') { module.exports = app.listen() } else { app.listen( port, () => { console.log('Server run on: http://0.0.0.0:%d', port) } ) }