https://blog.csdn.net/qq_37261367/article/details/81062038
koa自带的error事件
app.on("error", (err, ctx) => {
/*
你的处理
*/
});
但是遇到404这类状态码 并不会触发
为此需要手写一套方案
index.js
const koa = require('koa');
const app = new koa();
//统一错误异常处理
app.use(async (ctx, next) => {
let status = 0;
let fileName = "";
try{
await next();
status = ctx.status;
}catch(err){
console.log(err);
status = 500;
}
if(status >= 400){
switch(status){
case 400:
case 404:
case 500:
fileName = status;
break;
default:
fileName = "other";
break;
}
}
ctx.response.status = status;
console.log(fileName);
});
封装一下
/middleware/errorHandler.js
module.exports = (app) => {
app.use(async (ctx, next) => {
let status = 0;
let fileName = "";
try{
await next();
status = ctx.status;
}catch(err){
//console.log(err);
status = 500;
}
if(status >= 400){
switch(status){
case 400:
case 404:
case 500:
fileName = status;
break;
default:
fileName = "other";
break;
}
}
ctx.response.status = status;
console.log(fileName);
});
}
index.js
const koa = require('koa');
const app = new koa();
//统一错误异常处理
const errorHandler = require('./middleware/errorHandler');
errorHandler(app);