error_handler.js 917 B

1234567891011121314151617181920212223242526272829
  1. module.exports = () => {
  2. return async function errorHandler(ctx, next) {
  3. try {
  4. await next();
  5. } catch (err) {
  6. // 所有的异常都在 app 上触发一个 error 事件,框架会记录一条错误日志
  7. ctx.app.emit('error', err, ctx);
  8. console.log("--->xxxxxxxxxxxxxxxxxxxxxxxxx" , err );
  9. const status = err.status || 500;
  10. // 生产环境时 500 错误的详细错误内容不返回给客户端,因为可能包含敏感信息
  11. let error = err;
  12. if( typeof error != "string")
  13. {
  14. error = (status === 500 && ctx.app.config.env === 'prod') ? 'Internal Server Error' : err.message;
  15. }
  16. ctx.logger.info(status);
  17. if (status === 422) {
  18. error = err.errors;
  19. }
  20. ctx.body = {errorNo: status, success:false, message:error,result:null};
  21. ctx.status = 200;
  22. }
  23. };
  24. };