diff --git a/src/pages/crontab/modal.tsx b/src/pages/crontab/modal.tsx index ac8e8182..523e9797 100644 --- a/src/pages/crontab/modal.tsx +++ b/src/pages/crontab/modal.tsx @@ -3,7 +3,7 @@ import config from '@/utils/config'; import { request } from '@/utils/http'; import { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons'; import { Button, Form, Input, Modal, Select, Space, message } from 'antd'; -import { CronExpressionParser } from 'cron-parser'; +import cronParser from 'cron-parser'; import { useEffect, useState } from 'react'; import intl from 'react-intl-universal'; import { getScheduleType, scheduleTypeMap } from './const'; @@ -91,10 +91,14 @@ const CronModal = ({ { required: true }, { validator: (_, value) => { - if (!value || CronExpressionParser.parse(value).hasNext()) { - return Promise.resolve(); + try { + if (!value || cronParser.CronExpressionParser.parse(value).hasNext()) { + return Promise.resolve(); + } + return Promise.reject(intl.get('Cron表达式格式有误')); + } catch (e) { + return Promise.reject(intl.get('Cron表达式格式有误')); } - return Promise.reject(intl.get('Cron表达式格式有误')); }, }, ]} diff --git a/src/pages/subscription/modal.tsx b/src/pages/subscription/modal.tsx index 90c2f810..7d254cd6 100644 --- a/src/pages/subscription/modal.tsx +++ b/src/pages/subscription/modal.tsx @@ -12,7 +12,7 @@ import { } from 'antd'; import { request } from '@/utils/http'; import config from '@/utils/config'; -import { CronExpressionParser } from 'cron-parser'; +import cronParser from 'cron-parser'; import isNil from 'lodash/isNil'; const { Option } = Select; @@ -378,13 +378,17 @@ const SubscriptionModal = ({ { required: true }, { validator: (rule, value) => { - if ( - scheduleType === 'interval' || - !value || - CronExpressionParser.parse(value).hasNext() - ) { - return Promise.resolve(); - } else { + try { + if ( + scheduleType === 'interval' || + !value || + cronParser.CronExpressionParser.parse(value).hasNext() + ) { + return Promise.resolve(); + } else { + return Promise.reject(intl.get('Subscription表达式格式有误')); + } + } catch (e) { return Promise.reject(intl.get('Subscription表达式格式有误')); } }, diff --git a/src/utils/index.ts b/src/utils/index.ts index 954b35b3..4b899a17 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,6 +1,6 @@ import intl from 'react-intl-universal'; import { LANG_MAP, LOG_END_SYMBOL } from './const'; -import { CronExpressionParser } from 'cron-parser'; +import cronParser from 'cron-parser'; import { ICrontab } from '@/pages/crontab/type'; export default function browserType() { @@ -333,7 +333,7 @@ export function getCommandScript( export function parseCrontab(schedule: string): Date | null { try { - const time = CronExpressionParser.parse(schedule); + const time = cronParser.CronExpressionParser.parse(schedule); if (time) { return time.next().toDate(); }