From c8ae6e39d2eb3000afbb83b96463615d7adb4a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9B=90=E7=B2=92=20Yanli?= Date: Fri, 23 Jan 2026 10:15:20 +0800 Subject: [PATCH] fix: NextStep crash when target node is missing (#31416) --- .../nodes/_base/components/next-step/index.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/web/app/components/workflow/nodes/_base/components/next-step/index.tsx b/web/app/components/workflow/nodes/_base/components/next-step/index.tsx index 0b22d44aac..8081f09b0c 100644 --- a/web/app/components/workflow/nodes/_base/components/next-step/index.tsx +++ b/web/app/components/workflow/nodes/_base/components/next-step/index.tsx @@ -44,11 +44,19 @@ const NextStep = ({ const connectedEdges = getConnectedEdges([selectedNode] as Node[], edges).filter(edge => edge.source === selectedNode!.id) const list = useMemo(() => { + const resolveNextNodes = (connected: typeof connectedEdges) => { + return connected.reduce((acc, edge) => { + const nextNode = outgoers.find(outgoer => outgoer.id === edge.target) + if (nextNode) + acc.push(nextNode) + return acc + }, []) + } let items = [] if (branches?.length) { items = branches.map((branch, index) => { const connected = connectedEdges.filter(edge => edge.sourceHandle === branch.id) - const nextNodes = connected.map(edge => outgoers.find(outgoer => outgoer.id === edge.target)!) + const nextNodes = resolveNextNodes(connected) return { branch: { @@ -61,7 +69,7 @@ const NextStep = ({ } else { const connected = connectedEdges.filter(edge => edge.sourceHandle === 'source') - const nextNodes = connected.map(edge => outgoers.find(outgoer => outgoer.id === edge.target)!) + const nextNodes = resolveNextNodes(connected) items = [{ branch: { @@ -73,7 +81,7 @@ const NextStep = ({ if (data.error_strategy === ErrorHandleTypeEnum.failBranch && hasErrorHandleNode(data.type)) { const connected = connectedEdges.filter(edge => edge.sourceHandle === ErrorHandleTypeEnum.failBranch) - const nextNodes = connected.map(edge => outgoers.find(outgoer => outgoer.id === edge.target)!) + const nextNodes = resolveNextNodes(connected) items.push({ branch: {