From c5371ae886114565f2287096a9694f64efeb2851 Mon Sep 17 00:00:00 2001
From: gaga0714 <140368447+gaga0714@users.noreply.github.com>
Date: Tue, 31 Mar 2026 16:56:32 +0800
Subject: [PATCH] fix: deal with undefined valueType (#6684)
* fix: deal with undefined valueType
* fix
* fix
* fix key
---
packages/global/core/workflow/node/constant.ts | 10 ++++++++++
.../RenderInput/templates/DynamicInputs/index.tsx | 4 ++--
.../Flow/nodes/render/RenderOutput/DynamicOutputs.tsx | 10 ++++++----
.../Flow/nodes/render/ValueTypeLabel.tsx | 5 ++---
4 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/packages/global/core/workflow/node/constant.ts b/packages/global/core/workflow/node/constant.ts
index 840ef84f3b..a15bd6b13f 100644
--- a/packages/global/core/workflow/node/constant.ts
+++ b/packages/global/core/workflow/node/constant.ts
@@ -232,6 +232,16 @@ export const FlowValueTypeMap: Record<
}
};
+export const getFlowValueTypeMeta = (
+ valueType?: WorkflowIOValueTypeEnum | string | null
+): (typeof FlowValueTypeMap)[WorkflowIOValueTypeEnum] => {
+ if (valueType == null || valueType === '') {
+ return FlowValueTypeMap[WorkflowIOValueTypeEnum.any];
+ }
+ const meta = FlowValueTypeMap[valueType as WorkflowIOValueTypeEnum];
+ return meta ?? FlowValueTypeMap[WorkflowIOValueTypeEnum.any];
+};
+
export const EDGE_TYPE = 'default';
export const chatHistoryValueDesc = `{
diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx
index 3bb0d05a0c..55d271edff 100644
--- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderInput/templates/DynamicInputs/index.tsx
@@ -14,7 +14,7 @@ import MyIconButton from '@fastgpt/web/components/common/Icon/button';
import { useToast } from '@fastgpt/web/hooks/useToast';
import {
FlowNodeInputTypeEnum,
- FlowValueTypeMap
+ getFlowValueTypeMeta
} from '@fastgpt/global/core/workflow/node/constant';
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
import { useMemoEnhance } from '@fastgpt/web/hooks/useMemoEnhance';
@@ -255,7 +255,7 @@ const Reference = ({
fontSize={'sm'}
fontWeight={'medium'}
>
- {t(FlowValueTypeMap[inputChildren.valueType || WorkflowIOValueTypeEnum.any].label)}
+ {t(getFlowValueTypeMeta(inputChildren.valueType).label)}
{!isEmptyItem && (
diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/DynamicOutputs.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/DynamicOutputs.tsx
index 22f72c7b43..27043cb0ae 100644
--- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/DynamicOutputs.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/RenderOutput/DynamicOutputs.tsx
@@ -3,7 +3,7 @@ import type { FlowNodeOutputItemType } from '@fastgpt/global/core/workflow/type/
import { Box, Flex, Input, HStack } from '@chakra-ui/react';
import {
FlowNodeOutputTypeEnum,
- FlowValueTypeMap
+ getFlowValueTypeMeta
} from '@fastgpt/global/core/workflow/node/constant';
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
import { useTranslation } from 'next-i18next';
@@ -90,7 +90,7 @@ const DynamicOutputs = ({ nodeId, outputs, addOutput }: DynamicOutputsProps) =>
{outputs.length > 0 && }
{[...outputs, defaultOutput].map((output, index) => (
-
+
({
- label: t(FlowValueTypeMap[item].label),
+ label: t(getFlowValueTypeMeta(item).label),
value: item
}));
}, [t]);
@@ -178,6 +178,8 @@ const DynamicOutputItem = ({
[output, onUpdate, onAdd, isEmptyItem, outputs]
);
+ const selectValueType = getFlowValueTypeMeta(output?.valueType).value;
+
return (
@@ -198,7 +200,7 @@ const DynamicOutputItem = ({
h={10}
borderLeftRadius={'none'}
borderColor={'myGray.200'}
- value={output?.valueType}
+ value={selectValueType}
list={valueTypeList}
onChange={onChangeValueType}
isDisabled={isEmptyItem}
diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx
index ebe4fe21c2..e95c5e05cf 100644
--- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx
+++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/render/ValueTypeLabel.tsx
@@ -1,4 +1,4 @@
-import { FlowValueTypeMap } from '@fastgpt/global/core/workflow/node/constant';
+import { getFlowValueTypeMeta } from '@fastgpt/global/core/workflow/node/constant';
import type { BoxProps } from '@chakra-ui/react';
import { Box } from '@chakra-ui/react';
import type { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
@@ -14,9 +14,8 @@ const ValueTypeLabel = ({
valueType?: WorkflowIOValueTypeEnum;
valueDesc?: string;
} & BoxProps) => {
- const valueTypeData = valueType ? FlowValueTypeMap[valueType] : undefined;
const { t } = useTranslation();
- const label = valueTypeData?.label || '';
+ const label = valueType ? getFlowValueTypeMeta(valueType).label : '';
return !!label ? (