代码拉取完成,页面将自动刷新
/*
* @Author: zzh
* @Date: 2021-08-17
* @FilePath: \service\app.js
*/
import path from 'path'
import Koa from 'koa'
const app = new Koa()
import views from 'koa-views'
import json from 'koa-json'
import onerror from 'koa-onerror'
import compress from 'koa-compress' //压缩
import koaBody from 'koa-body'
import logger from 'koa-logger'
import koaJwt from 'koa-jwt' //路由权限控制
import cors from 'koa2-cors'
import {
accessLogger,
appLogger
} from './logger'
// const Redis = require('./utils/redis');
// import sequelize from '@/database/sequelize'
import Conf from './config'
import responseFormat from './middleware/format_response'
import project from './app/index'
// global.redis = new Redis(); // 将redis挂载到全局,使用的时候可以直接redis.set,redis.get,redis.delete
/* redis 使用demo */
// redis.set('myname','fff',1) //改值的过期时间为1天,超过访问返回null,不设过期天数走redis的过期策略
// console.log(await redis.get('myname'));
// redis.delete('myname');
app.use(cors()); // cors跨域注册
// error handler
onerror(app)
// compress data
app.use(compress({
filter: function(content_type) { //只有在请求的content-type中有gzip类型,我们才会考虑压缩,因为zlib是压缩成gzip类型的
return /(text)|(js)/i.test(content_type);
},
threshold: Conf.compress.threshold, //阀值,当数据超过2kb的时候,可以压缩
flush: require('zlib').constants.Z_SYNC_FLUSH
}));
//是否启用gzip压缩
app.use(async(ctx, next) => {
ctx.compress = Conf.compress.isCompress; //是否压缩数据
await next();
});
app.use(json())
app.use(logger())
app.use(koaBody({
multipart: true,
formidable: {
keepExtensions: Conf.multipart.keepExtensions, // 保留文件扩展名
maxFileSize: Conf.multipart.maxFileSize // 设置上传文件大小最大限制,默认2M
}
}));
app.use(require('koa-static')(__dirname + '/public'))
app.use(responseFormat) //响应数据格式化返回
//秘钥
app.use(koaJwt({
secret: Conf.jwt.jwtSecret,
// passthrough: true
}).unless({
path: Conf.jwt.rule
}))
app.use(views(__dirname + '/views', {
extension: 'pug'
}))
app.use(accessLogger())
// 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`)
// })
// routes
// 路由注册
app.use(project.routes(), project.allowedMethods())
// error-handling
app.on('error', (err, ctx) => {
console.error('server error', err, ctx)
//开发环境才记录日志
if (process.env.NODE_ENV !== 'dev') {
appLogger.error(err)
}
});
module.exports = app
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。