UNPKG

datamax-cli

Version:

datamax plugin cli

92 lines (76 loc) 3.1 kB
const Koa = require("koa"); const app = new Koa(); const router = require("koa-router")(); const views = require("koa-views"); const co = require("co"); const convert = require("koa-convert"); const json = require("koa-json"); const onerror = require("koa-onerror"); const bodyparser = require("koa-bodyparser")(); const logger = require("koa-logger"); const htmlRender = require("koa-html-render"); // 引入koa-html-render const index = require("./routes/index"); // middlewares app.use(convert(bodyparser)); app.use(convert(json())); app.use(convert(logger())); app.use(convert(require("koa-static")(__dirname + "/public"))); app.use(convert(require("koa-static")(__dirname + "/pages"))); app.use(convert(htmlRender())); // 这里默认 static文件夹是存放静态html资源的文件夹 app.use( views(__dirname + "/views", { extension: "jade", }) ); // app.use(views(__dirname + '/views-ejs', { // extension: 'ejs' // })); // 处理跨域 app.use(async (ctx, next) => { // 允许来自所有域名请求 ctx.set("Access-Control-Allow-Origin", "*"); // 设置所允许的HTTP请求方法 ctx.set("Access-Control-Allow-Methods", "OPTIONS, GET, PUT, POST, DELETE"); // 字段是必需的。它也是一个逗号分隔的字符串,表明服务器支持的所有头信息字段. ctx.set( "Access-Control-Allow-Headers", "x-requested-with, accept, origin, content-type" ); // 服务器收到请求以后,检查了Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段以后,确认允许跨源请求,就可以做出回应。 // Content-Type表示具体请求中的媒体类型信息 ctx.set("Content-Type", "application/json;charset=utf-8"); // 该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。 // 当设置成允许请求携带cookie时,需要保证"Access-Control-Allow-Origin"是服务器有的域名,而不能是"*"; ctx.set("Access-Control-Allow-Credentials", true); // 该字段可选,用来指定本次预检请求的有效期,单位为秒。 // 当请求方法是PUT或DELETE等特殊方法或者Content-Type字段的类型是application/json时,服务器会提前发送一次请求进行验证 // 下面的的设置只本次验证的有效时间,即在该时间段内服务端可以不用进行验证 ctx.set("Access-Control-Max-Age", 300); if (ctx.method == "OPTIONS") { ctx.body = 200; } await next(); }); // 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`); }); router.use("/", index.routes(), index.allowedMethods()); app.use(router.routes(), router.allowedMethods()); // response const koaBody = require("koa-body"); app.use( koaBody({ multipart: true, formidable: { maxFileSize: 200 * 1024 * 1024, // 设置上传文件大小最大限制,默认2M }, }) ); app.on("error", function (err, ctx) { console.log(err); }); module.exports = app;