12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- const Koa = require('koa');
- const { koaBody } = require('koa-body');
- const cors = require('koa2-cors');
- const koajwt = require('koa-jwt');
- const path = require('path');
- const { routerInstaller } = require('./utils/installer');
- const errorHandler = require('./error');
- const config = require('./config');
- const app = new Koa();
- app.use(
- cors({
- credentials: true,
- exposeHeaders: ['Content-Disposition'],
- }),
- );
- app.use(async (ctx, next) => {
- try {
- await next();
- } catch (err) {
- if (err.name === 'UnauthorizedError') {
- ctx.body = {
- code: 10018,
- data: '',
- message: 'TOKEN 无效,请重新登录',
- };
- return;
- } else if (err.message.indexOf('options.maxFileSize') > -1) {
- ctx.body = {
- code: 102,
- data: '',
- message: '超出最大限制,文件最大为5M',
- };
- return;
- } else {
- ctx.body = {
- code: -1,
- data: '',
- message: err.message,
- };
- }
- }
- });
- app.use(
- koaBody({
- multipart: true,
- formidable: {
- uploadDir: path.join(__dirname, 'public/'),
- keepExtensions: true,
- allowEmptyFiles: false,
- maxFiles: 1,
- maxFileSize: 5 * 1024 * 1024,
- maxFields: 10,
- maxFieldsSize: 3 * 1024 * 1024,
- },
- }),
- );
- app.use(
- koajwt({ secret: config.JWT_SECRET }).unless({
- path: [
- /^\/api\/user\/login/,
- /^\/api\/user\/admin\/login/,
- /^\/api\/user\/wechat/,
- /^\/api\/user\/sendEmail/,
- /^\/api\/user\/regist/,
- /^\/api\/user\/password/,
- /^\/api\/admin\/page\/detail/,
- /^\/api\/ai\/proxy/,
- /^\/api\/firefly/,
- ],
- }),
- );
- routerInstaller(app);
- app.on('error', errorHandler);
- module.exports = app;
|