'use strict';
//app/middleware/error_handler.js
module.exports = () => {
return async function errorHandler(ctx, next) {
try {
await next();
} catch (err) {
// 所有的异常都会在app上出发一个error事件,框架会记录一条错误日志
ctx.app.emit('error', err, ctx);
const status = err.status || 500;
// 如果时生产环境的时候 500错误的详细错误内容不返回给客户端
const error = status === 500 && ctx.app.config.env === 'prod' ? '网络错误' : err.message;
ctx.body = {
msg: error,
sta: status,
data: [],
};
}
};
};
//config.default.js
module.exports = appInfo => {
/**
* built-in config
* @type {Egg.EggAppConfig}
**/
const config = exports = {};
// add your middleware config here
config.middleware = [ 'errorHandler' ];
// 统一错误信息配置(注:match和ignore不可以同时配置)
config.errorHandler = {
enable: true, // 中间件开启配置
match: '', // 设置请求中间件的请求路由
// ignore: '', // 设置不经过这个中间件的请求路由
};
return {
...config,
};
};