全局错误处理

server.js:

const Koa = require('koa');
const config = require('./config');
const opn = require('opn');
const network = require('./libs/network');
const Router = require('koa-router');
const {post, upload} = require('./libs/body');
const fs = require('promise-fs');

let server = new Koa();

(async ()=>{
    server.context.db = await require('./libs/mysql')
    server.context.redis = require('./libs/redis')

    let error_404 = ''
    try{
        error_404 = await fs.readFile(config.errors_404)
        error_404 = error_404.toString()
    }catch(e){
        console.log('read 404 file error')
    }

    let error_500 = ''
    try{
        error_500 = await fs.readFile(config.errors_500)
        error_500 = error_500.toString()
    }catch(e) {
        console.log('read 500 file error')
    }

    // 全局错误处理
    server.use(async (ctx, next)=>{
        try{
            await next();
            if(!ctx.body) {
                ctx.status = 404;
                ctx.body = error_404 || 'Not Found'
            }
        }catch(e){
            ctx.status = 500
            ctx.body = error_500 ||'Internal Server Error'
            console.log(e)
        }
    })
    
    

    // router
    server.use(require('./router'));
    // session
    await require('./libs/session')(server);


    // post文件上传
    let router = new Router()
    // post + no upload
    router.post('/api', post(), async ctx=>{
            console.log(ctx.request.fields);
        })

    // post + upload
    router.post(
        '/upload',
        ...upload({
            maxFileSize: 100 * 1024,
            sizeExceed: async ctx=>{
                ctx.body = 'aaa'
            },
            error: async ctx=>{
                ctx.body = 'error'
            }
        }),
        async ctx=>{
            console.log(ctx.request.fields)
            ctx.body = '上传成功'
            
        }
    )
    server.use(router.routes())

    // network
    network.forEach(ip =>{
        if(config.port == 80) {
            console.log(`server running at ${ip}`);
        }else{
            console.log(`server running at ${ip}:${config.port}`);
        }
    })
    server.listen(config.port)

    
    

    opn(`http://localhost:${config.port}`)
})();

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值