BabylonJS/Babylon.js · error · Error
Could not find signal input with name ${name} in block ${cla
Error message
Could not find signal input with name ${name} in block ${className} What it means
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.
Source
Thrown at packages/dev/core/src/FlowGraph/flowGraphExecutionBlock.ts:138
}
for (const output of this.signalOutputs) {
const serializedOutput: any = {};
output.serialize(serializedOutput);
serializationObject.signalOutputs.push(serializedOutput);
}
}
/**
* Deserializes from an object
* @param serializationObject the object to deserialize from
*/
public override deserialize(serializationObject: any) {
for (let i = 0; i < serializationObject.signalInputs.length; i++) {
const signalInput = this.getSignalInput(serializationObject.signalInputs[i].name);
if (signalInput) {
signalInput.deserialize(serializationObject.signalInputs[i]);
} else {
throw new Error("Could not find signal input with name " + serializationObject.signalInputs[i].name + " in block " + serializationObject.className);
}
}
for (let i = 0; i < serializationObject.signalOutputs.length; i++) {
const signalOutput = this.getSignalOutput(serializationObject.signalOutputs[i].name);
if (signalOutput) {
signalOutput.deserialize(serializationObject.signalOutputs[i]);
} else {
throw new Error("Could not find signal output with name " + serializationObject.signalOutputs[i].name + " in block " + serializationObject.className);
}
}
}
/**
* @returns the class name
*/
public override getClassName(): string {
return "FlowGraphExecutionBlock";
}
View on GitHub (pinned to 0592b347b8)
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
Example fix
// before (renamed input 'out' -> 'onDone')
serializationObject.signalInputs = [{ name: 'out' }];
// after
serializationObject.signalInputs = [{ name: 'onDone' }]; Defensive patterns
Strategy: try-catch
Validate before calling
const missing = serializationObject.signalInputs?.filter(
(si: any) => !block.getSignalInput(si.name)
) ?? [];
if (missing.length) throw new Error('Unknown signal inputs: ' + missing.map((m: any) => m.name).join(','));
block.deserialize(serializationObject); Type guard
function hasAllSignalInputs(block: FlowGraphExecutionBlock, ser: any): boolean {
return (ser?.signalInputs ?? []).every((si: any) => !!block.getSignalInput(si.name));
} Try / catch
try {
block.deserialize(serializationObject);
} catch (e) {
if (String(e.message).startsWith('Could not find signal input')) {
// payload version mismatch: re-serialize or migrate names
}
} Prevention
- 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
When it happens
Trigger: Calling block.deserialize(serializationObject) where serializationObject.signalInputs[i].name does not match any name returned by getSignalInput on the block.
Common situations: See trigger scenarios.
Related errors
- Could not find signal output with name ${name} in block ${cl
- Could not find data out connection with unique id ${serializ
- Could not find data in connection with unique id ${serialize
- Cannot compare ${a} and ${b}
- Cannot get NaN of ${a}
AI-assisted analysis of BabylonJS/Babylon.js@0592b347b8 (2026-08-30).
Data as JSON: /api/errors/8c25c9803e684f20.
Report an issue: GitHub.