1234567891011121314151617181920212223242526272829303132 |
- 'use strict';
- const _ = require('lodash');
- module.exports = options => {
- return async function errorEmail(ctx, next) {
- try {
- await next();
- } catch (e) {
- let errcode = -1,
- errmsg = '服务发生错误',
- details;
- const emailData = {};
- if (_.isNumber(e.errcode)) {
- errcode = _.get(e, 'errcode');
- errmsg = _.get(e, 'errmsg');
- details = _.get(e, 'details');
- emailData.errmsg = errmsg;
- emailData.details = details;
- } else {
- emailData.errmsg = e.stack;
- }
- emailData.errcode = errcode;
- // 未定义的错误需要发邮件,定义的错误不需要
- if (!_.isNumber(e.errcode)) {
- // 非开发模式发送邮件
- if (process.env.NODE_ENV !== 'development') {
- ctx.service.util.email.errorEmail(emailData);
- }
- }
- ctx.fail(errcode, errmsg, details);
- }
- };
- };
|