1
0

execption.ts 788 B

123456789101112131415161718192021222324
  1. import { Context } from 'egg';
  2. /**
  3. * 统一异常处理
  4. */
  5. export default function Exception(): any {
  6. return async (ctx: Context, next: () => Promise<any>) => {
  7. try {
  8. await next();
  9. } catch (err) {
  10. const { errors } = err;
  11. ctx.logger.error('[Exception]', err.message, errors);
  12. ctx.set('Content-Type', 'application/json');
  13. // 生产环境时 500 错误的详细错误内容不返回给客户端,因为可能包含敏感信息
  14. const status = err.status || 500;
  15. const message = status === 500 && ctx.app.config.env === 'prod' ? '服务器好像出了点问题...稍后再试试' : err.message;
  16. ctx.status = status;
  17. ctx.body = JSON.stringify({
  18. errorCode: err.errorCode || 500,
  19. message,
  20. });
  21. }
  22. };
  23. }