1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- const mailSend = require('../util/mailSend');
- const sys = require('../config/sys');
- let api, adminMail;
- class OwnError extends Error {
- constructor(msg = '', code = 400, additional = undefined) {
- super();
- this.msg = msg;
- this.code = code;
- this.additional = additional;
- }
- }
- function err(msg, code, additional) {
- throw (new OwnError(msg, code, additional));
- }
- async function error(ctx, next) {
- try {
- ctx[api] = err;
- await next()
- } catch (e) {
- let body;
- if (e instanceof OwnError) {
- ctx.status = e.code
- body = {
- msg: e.msg,
- content: e.additional
- }
- } else {
- ctx.status = 500
- body = { code: 500, msg: '系统发生错误,请稍后再试!' };
- if (!sys.debug && adminMail) {
- await mailSend({
- to: adminMail,
- subject: '4维时代错误提醒',
- html: `<h1>${e.message}</h1><div>${e.stack ? e.stack.replace(/\n/ig, '<br>') : e}</div>`
- });
- } else {
- throw e;
- }
- }
- ctx.body = body;
- }
- }
- function init(_api = 'error', _adminMail) {
- api = _api;
- adminMail = _adminMail;
- return error;
- }
- module.exports = exports = init;
|