koa-typescript-sequlize-swagger
Version:
nodejs的后端模板,使用了koa,typescript,koa-swagger-decorator,zod等
66 lines (57 loc) • 1.77 kB
text/typescript
// koa的挂载和静态资源开放等
import koa from 'koa'
import indexRouter from '@/router/index'
import koaBody from 'koa-body'
import path from 'path'
import onError from 'koa-onerror'
import staticFiles from 'koa-static'
import { error, trace } from '@/config/log4j'
import { ctxBody } from '@/utils'
const app = new koa()
// 监听错误的
onError(app, {
json: function (err, ctx) {
ctx.status = 500
ctx.body = ctxBody({ msg: err.message })
}
})
// 跨域
// @ts-ignore
app
.on('error', async (err, ctx, next) => {
ctx.status = 500
ctx.body = ctxBody({ data: err.errors[0] })
console.log(err.errors[0])
error('响应错误,' + JSON.stringify(err))
})
.use(async (ctx, next) => {
ctx.set('Access-Control-Allow-Origin', '*')
ctx.set('Access-Control-Allow-Headers', 'Content-Type')
ctx.set('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS')
await next()
})
.use(koaBody({
multipart: true,
formidable: {
uploadDir: path.join(__dirname, '../upload'), //设置上传目录
keepExtensions: true //保留拓展名
}
}))
//开放html模板的静态目录,你可以把打包后的html文件放到这个目录下
.use(staticFiles(path.join(__dirname, '../static/views/'), { extensions: ['html'] }))
.use(indexRouter.routes())
// .use(validate)
.on('error', async (err, ctx, next) => {
ctx.status = 500
ctx.body = err
error('响应错误,' + JSON.stringify(err))
})
.use((ctx, next) => {
console.log('最后的ctx')
trace('未知url' + ctx.request.url)
ctx.body = ctxBody({
code: 500,
msg: `这里是无人之境`,
})
})
export default app