fix(core): Ensure getNodeOutputs always returns an array (#19069)

This commit is contained in:
Csaba Tuncsik
2025-09-02 15:16:42 +02:00
committed by GitHub
parent 9569965a0b
commit 0f22f3be92
2 changed files with 9 additions and 11 deletions

View File

@@ -1047,12 +1047,15 @@ export function getNodeOutputs(
} else {
// Calculate the outputs dynamically
try {
outputs = (workflow.expression.getSimpleParameterValue(
const result = workflow.expression.getSimpleParameterValue(
node,
nodeTypeData.outputs,
'internal',
{},
) || []) as NodeConnectionType[];
);
outputs = Array.isArray(result)
? (result as Array<NodeConnectionType | INodeOutputConfiguration>)
: [];
} catch (e) {
console.warn('Could not calculate outputs dynamically for node: ', node.name);
}

View File

@@ -697,15 +697,10 @@ export class Workflow {
const outputs = NodeHelpers.getNodeOutputs(this, node, nodeType.description);
const nonMainConnectionTypes: NodeConnectionType[] = [];
// Defensive check: NodeHelpers.getNodeOutputs should always return an array,
// but in some edge cases (particularly during testing with incomplete node setup),
// it may return undefined or null
if (Array.isArray(outputs)) {
for (const output of outputs) {
const type = typeof output === 'string' ? output : output.type;
if (type !== NodeConnectionTypes.Main) {
nonMainConnectionTypes.push(type);
}
for (const output of outputs) {
const type = typeof output === 'string' ? output : output.type;
if (type !== NodeConnectionTypes.Main) {
nonMainConnectionTypes.push(type);
}
}