const Koa = require('koa') const app = new Koa() const views = require('koa-views') const json = require('koa-json') const onerror = require('koa-onerror') const logger = require('koa-logger') const {koaBody} = require('koa-body')// 支持form-data,支持文件,不支持x-www-form-urlencoded,不可同时使用, const index = require('./routes/index') const users = require('./routes/users') const fileStorage = require('./routes/fileStorage') const menu = require('./routes/menu') const container = require('./routes/container') const initSQL = require('./Database/index'); initSQL() // error handler onerror(app) // middlewares app.use(json()) app.use(logger()) app.use(require('koa-static')(__dirname + '/public')) app.use(views(__dirname + '/views', { extension: 'pug' })) // 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`) }) app.use(koaBody({ multipart: true, // 支持文件上传 encoding: 'gzip', strict: false,// 参数:如果启用,则不解析GET,HEAD,DELETE请求,默认为true formidable: { // uploadDir:path.join(__dirname,'public/upload/'), // 设置文件上传目录 keepExtensions: true, // 保持文件的后缀 maxFieldsSize: 10 * 1024 * 1024, // 文件上传大小 // onFileBegin:(name,file) => { // 文件上传前的设置 // // console.log(`name: ${name}`); // // console.log(file); // }, } })); // routes app.use(index.routes(), index.allowedMethods()) app.use(users.routes(), users.allowedMethods()) app.use(fileStorage.routes(), fileStorage.allowedMethods()) app.use(menu.routes(), menu.allowedMethods()) app.use(container.routes(), container.allowedMethods()) global.dirname = __dirname // error-handling app.on('error', (err, ctx) => { console.error('server error', err, ctx) }); module.exports = app