{"record":{"id":"8c25c9803e684f20","repo":"BabylonJS/Babylon.js","slug":"could-not-find-signal-input-with-name-name-in-b","errorCode":null,"errorMessage":"Could not find signal input with name ${name} in block ${className}","messagePattern":"Could not find signal input with name (.+?) in block (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/dev/core/src/FlowGraph/flowGraphExecutionBlock.ts","lineNumber":138,"sourceCode":"        }\r\n        for (const output of this.signalOutputs) {\r\n            const serializedOutput: any = {};\r\n            output.serialize(serializedOutput);\r\n            serializationObject.signalOutputs.push(serializedOutput);\r\n        }\r\n    }\r\n\r\n    /**\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","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/BabylonJS/Babylon.js/blob/0592b347b8a4ee0236089ea86a749cacfdb266d8/packages/dev/core/src/FlowGraph/flowGraphExecutionBlock.ts#L120-L156","documentation":"Thrown during FlowGraphExecutionBlock.deserialize when the serialization object lists a signal input whose name no longer matches any signal input on the block. It indicates the serialized data is out of sync with the block's actual inputs.","triggerScenarios":"Calling block.deserialize(serializationObject) where serializationObject.signalInputs[i].name does not match any name returned by getSignalInput on the block.","commonSituations":"See trigger scenarios.","solutions":["Regenerate the serialization from the current library version so names match","Ensure the correct block class is instantiated before deserializing (className must match)","Update or migrate old serialized payloads after block input renames","Remove stale signal input entries from the serialized JSON"],"exampleFix":"// before (renamed input 'out' -> 'onDone')\nserializationObject.signalInputs = [{ name: 'out' }];\n// after\nserializationObject.signalInputs = [{ name: 'onDone' }];","handlingStrategy":"try-catch","validationCode":"const missing = serializationObject.signalInputs?.filter(\n  (si: any) => !block.getSignalInput(si.name)\n) ?? [];\nif (missing.length) throw new Error('Unknown signal inputs: ' + missing.map((m: any) => m.name).join(','));\nblock.deserialize(serializationObject);","typeGuard":"function hasAllSignalInputs(block: FlowGraphExecutionBlock, ser: any): boolean {\n  return (ser?.signalInputs ?? []).every((si: any) => !!block.getSignalInput(si.name));\n}","tryCatchPattern":"try {\n  block.deserialize(serializationObject);\n} catch (e) {\n  if (String(e.message).startsWith('Could not find signal input')) {\n    // payload version mismatch: re-serialize or migrate names\n  }\n}","preventionTips":["Store the library version with serialized graphs and migrate on upgrade","Never hand-edit serialized signal input names","Re-export graphs after block API changes"],"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"}