const Koa = require('koa');
const Router = require('koa-router');
let app = new Koa;
let router = new Router();
const auth = async (ctx, next) => {
// let error = new Error('this is an error')
ctx.throw(500)
await next(error)
}
router.get('/:user', auth, (ctx) => {
let user = ctx.params.user;
let name = ctx.params.name;
console.log(error)
ctx.response.type = 'json';
ctx.body = {
user,
name
}
})
app.use(async ( ctx, next) => {
try {
await next()
} catch (err) {
ctx.type = 'json'
ctx.body = {
message : err.message
}
ctx.app.emit('error', err, ctx);
}
})
app.use(router.routes())
app.on('error', (err,ctx) => {
console.log(111)
ctx.type = 'json'
ctx.body = {
message : err.message
}
})
app.listen(8092, () => {
console.log('8092 is listening koa');
})
当我没有加中间件异常处理函数的时候, koa 的on error 事件能触发,但是ctx.type json 不能生效,不知道是什么原因,加上异常处理中间件后,on error 事件中的ctx.type 能生效,有木有大手子能解释一下