{"record":{"id":"46ad8299e110f88e","repo":"BabylonJS/Babylon.js","slug":"could-not-find-signal-output-with-name-name-in","errorCode":null,"errorMessage":"Could not find signal output with name ${name} in block ${className}","messagePattern":"Could not find signal output with name (.+?) in block (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/dev/core/src/FlowGraph/flowGraphExecutionBlock.ts","lineNumber":146,"sourceCode":"    /**\r\n     * Deserializes from an object\r\n     * @param serializationObject the object to deserialize from\r\n     */\r\n    public override deserialize(serializationObject: any) {\r\n        for (let i = 0; i < serializationObject.signalInputs.length; i++) {\r\n            const signalInput = this.getSignalInput(serializationObject.signalInputs[i].name);\r\n            if (signalInput) {\r\n                signalInput.deserialize(serializationObject.signalInputs[i]);\r\n            } else {\r\n                throw new Error(\"Could not find signal input with name \" + serializationObject.signalInputs[i].name + \" in block \" + serializationObject.className);\r\n            }\r\n        }\r\n        for (let i = 0; i < serializationObject.signalOutputs.length; i++) {\r\n            const signalOutput = this.getSignalOutput(serializationObject.signalOutputs[i].name);\r\n            if (signalOutput) {\r\n                signalOutput.deserialize(serializationObject.signalOutputs[i]);\r\n            } else {\r\n                throw new Error(\"Could not find signal output with name \" + serializationObject.signalOutputs[i].name + \" in block \" + serializationObject.className);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @returns the class name\r\n     */\r\n    public override getClassName(): string {\r\n        return \"FlowGraphExecutionBlock\";\r\n    }\r\n}\r\n","sourceCodeStart":128,"sourceCodeEnd":158,"githubUrl":"https://github.com/BabylonJS/Babylon.js/blob/0592b347b8a4ee0236089ea86a749cacfdb266d8/packages/dev/core/src/FlowGraph/flowGraphExecutionBlock.ts#L128-L158","documentation":"Thrown during FlowGraphExecutionBlock.deserialize when the serialization object lists a signal output whose name does not match any signal output currently registered on the block. The block refuses partial deserialization to keep the graph consistent.","triggerScenarios":"Calling block.deserialize(serializationObject) where serializationObject.signalOutputs[i].name has no match via getSignalOutput on the block.","commonSituations":"Serialized graph produced by a different library version where a signal output was renamed/deleted; mixing serialized payloads across block implementations; corrupted or hand-edited JSON.","solutions":["Re-serialize the flow graph with the current library version","Verify the payload belongs to the same block class being deserialized","Migrate renamed signal outputs in stored serialization JSON","Strip obsolete signal output entries from the payload"],"exampleFix":"// before\nserializationObject.signalOutputs = [{ name: 'clicked_old' }];\n// after\nserializationObject.signalOutputs = [{ name: 'onClick' }];","handlingStrategy":"try-catch","validationCode":"const missing = serializationObject.signalOutputs?.filter(\n  (so: any) => !block.getSignalOutput(so.name)\n) ?? [];\nif (missing.length) throw new Error('Unknown signal outputs: ' + missing.map((m: any) => m.name).join(','));\nblock.deserialize(serializationObject);","typeGuard":"function hasAllSignalOutputs(block: FlowGraphExecutionBlock, ser: any): boolean {\n  return (ser?.signalOutputs ?? []).every((so: any) => !!block.getSignalOutput(so.name));\n}","tryCatchPattern":"try {\n  block.deserialize(serializationObject);\n} catch (e) {\n  if (String(e.message).startsWith('Could not find signal output')) {\n    // regenerate serialization or migrate renamed outputs\n  }\n}","preventionTips":["Keep serialized payloads in sync with the block library version","Validate signal output names before deserializing","Avoid copying signal outputs between different block classes"],"tags":["flow-graph","babylonjs","deserialization","version-mismatch"],"backgroundTag":"deserialization-missing-field","analyzedSha":"0592b347b8a4ee0236089ea86a749cacfdb266d8","analyzedAt":"2026-08-30T15:11:20.442Z","schemaVersion":2},"datasetVersion":"2026-08-30T18:17:15.746Z"}