提交 c04bcce5 authored 作者: vipcxj's avatar vipcxj

改善路由错误的捕获,并增加原生错误的处理

上级 babd8810
......@@ -5,6 +5,7 @@ import _ from 'lodash';
import config from './utils/config';
import { isAuthed, hasDomain } from './utils/auth';
import { fullPath, makePromise0 } from './utils/helper';
import { processError } from './utils/error';
import App from './routes/app';
import { getMenus, getModuleInfo, getModuleLayout } from './data/modules';
import Monk from './routes/main/monk';
......@@ -159,7 +160,7 @@ function RouterConfig({ history, app }) {
},
];
return (
<Router history={history} routes={routes} />
<Router history={history} routes={routes} onError={processError} />
);
}
......
......@@ -13,38 +13,50 @@ const errStyle = {
};
export function processError(err) {
if (err && err.data) {
const data = err.data;
switch (data.errorCode) {
case errorCodes.no_such_user:
message.error('用户不存在!');
break;
case errorCodes.invalid_token:
push('/login');
break;
default:
showError(err);
if (err) {
if (err instanceof Error) {
showError(err);
} else if (err.data) {
const data = err.data;
switch (data.errorCode) {
case errorCodes.no_such_user:
message.error('用户不存在!');
break;
case errorCodes.invalid_token:
push('/login');
break;
default:
showError(err);
}
}
}
}
function showError(err) {
if (err) {
let msg;
if (err.data) {
const data = err.data;
msg = data ? data.message : err.message;
} else {
msg = err.message;
}
if (msg && msg.length < 256) {
message.error(msg);
} else {
if (err instanceof Error) {
Modal.error({
title: '服务器内部错误',
content: <div style={errStyle}>{msg}</div>,
title: `错误:${err.message}`,
content: <div style={errStyle}>{err.stack}</div>,
width: 460,
});
} else {
let msg;
if (err.data) {
const data = err.data;
msg = data ? data.message : err.message;
} else {
msg = err.message;
}
if (msg && msg.length < 256) {
message.error(msg);
} else {
Modal.error({
title: '服务器内部错误',
content: <div style={errStyle}>{msg}</div>,
width: 460,
});
}
}
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论