修复错误信息展示

This commit is contained in:
whyour 2023-08-06 20:56:59 +08:00
parent f947866c32
commit a9b9c4d7ad
6 changed files with 34 additions and 31 deletions

View File

@ -387,28 +387,22 @@ export function emptyDir(path: string) {
fs.rmdirSync(path); fs.rmdirSync(path);
} }
export function promiseExec(command: string): Promise<string> { export async function promiseExec(command: string): Promise<string> {
return new Promise((resolve, reject) => { try {
exec( const { stderr, stdout } = await promisify(exec)(command, { maxBuffer: 200 * 1024 * 1024, encoding: 'utf8' });
command, return stdout || stderr;
{ maxBuffer: 200 * 1024 * 1024, encoding: 'utf8' }, } catch (error) {
(err, stdout, stderr) => { return JSON.stringify(error);
resolve(stdout || stderr || JSON.stringify(err)); }
},
);
});
} }
export function promiseExecSuccess(command: string): Promise<string> { export async function promiseExecSuccess(command: string): Promise<string> {
return new Promise((resolve) => { try {
exec( const { stdout } = await promisify(exec)(command, { maxBuffer: 200 * 1024 * 1024, encoding: 'utf8' });
command, return stdout || '';
{ maxBuffer: 200 * 1024 * 1024, encoding: 'utf8' }, } catch (error) {
(err, stdout, stderr) => { return '';
resolve(stdout || ''); }
},
);
});
} }
export function parseHeaders(headers: string) { export function parseHeaders(headers: string) {
@ -501,7 +495,7 @@ export async function killTask(pid: number) {
[pid, ...pids].forEach((x) => { [pid, ...pids].forEach((x) => {
process.kill(x, 2); process.kill(x, 2);
}); });
} catch (error) {} } catch (error) { }
} else { } else {
process.kill(pid, 2); process.kill(pid, 2);
} }

View File

@ -37,7 +37,7 @@ async function linkCommand() {
if (fs.existsSync(target)) { if (fs.existsSync(target)) {
fs.unlinkSync(target); fs.unlinkSync(target);
} }
fs.symlink(source, target, (err) => {}); fs.symlink(source, target, (err) => { });
} }
} }

View File

@ -24,7 +24,7 @@ const check = async (
`tail -n 300 ~/.pm2/logs/schedule-error.log`, `tail -n 300 ~/.pm2/logs/schedule-error.log`,
); );
return callback( return callback(
new Error(`${scheduleErrLog || ''}\n${panelErrLog || ''}\n${res}`), new Error(`${scheduleErrLog || ''}\n${panelErrLog || ''}\n${res}`.trim()),
); );
default: default:

View File

@ -3,13 +3,17 @@ import intl from 'react-intl-universal';
export function rootContainer(container: any) { export function rootContainer(container: any) {
const locales = { const locales = {
'en-US': require('./locales/en-US.json'), 'en': require('./locales/en-US.json'),
'zh-CN': require('./locales/zh-CN.json'), 'zh': require('./locales/zh-CN.json'),
}; };
let currentLocale = intl.determineLocale({ let currentLocale = intl.determineLocale({
urlLocaleKey: 'lang', urlLocaleKey: 'lang',
cookieLocaleKey: 'lang', cookieLocaleKey: 'lang',
}); }).slice(0, 2);
if (!currentLocale || !Object.keys(locales).includes(currentLocale)) {
currentLocale = 'zh';
}
intl.init({ currentLocale, locales }); intl.init({ currentLocale, locales });
return container; return container;

View File

@ -47,7 +47,7 @@ const CronLogModal = ({
const log = data as string; const log = data as string;
setValue(log || intl.get('暂无日志')); setValue(log || intl.get('暂无日志'));
const hasNext = Boolean( const hasNext = Boolean(
log && !logEnded(log) && !log.includes(intl.get('任务未运行')), log && !logEnded(log) && !log.includes('任务未运行'),
); );
setExecuting(hasNext); setExecuting(hasNext);
autoScroll(); autoScroll();

View File

@ -9,17 +9,22 @@ import { SharedContext } from '@/layouts';
import { Alert, Typography } from 'antd'; import { Alert, Typography } from 'antd';
const Error = () => { const Error = () => {
const { user, theme, reloadUser } = useOutletContext<SharedContext>(); const { user } = useOutletContext<SharedContext>();
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [data, setData] = useState(intl.get('暂无日志')); const [data, setData] = useState(intl.get('暂无日志'));
const retryTimes = useRef(1); const retryTimes = useRef(1);
const getLog = (needLoading: boolean = true) => { const getHealthStatus = (needLoading: boolean = true) => {
needLoading && setLoading(true); needLoading && setLoading(true);
request request
.get(`${config.apiPrefix}public/health`) .get(`${config.apiPrefix}public/health`)
.then(({ error, data }) => { .then(({ error, data }) => {
if (data?.status === 1) { if (data?.status === 1) {
if (retryTimes.current > 1) {
setTimeout(() => {
window.location.reload();
});
}
return; return;
} }
if (retryTimes.current > 3) { if (retryTimes.current > 3) {
@ -28,7 +33,7 @@ const Error = () => {
} }
retryTimes.current += 1; retryTimes.current += 1;
setTimeout(() => { setTimeout(() => {
getLog(false); getHealthStatus(false);
}, 3000); }, 3000);
}) })
.finally(() => needLoading && setLoading(false)); .finally(() => needLoading && setLoading(false));
@ -41,7 +46,7 @@ const Error = () => {
}, [user]); }, [user]);
useEffect(() => { useEffect(() => {
getLog(); getHealthStatus();
}, []); }, []);
return ( return (