Merge pull request #4460 from node-red/4369-improve-error-handling-in-subflowmodule-parsing

Handle unknown node reference inside subflow module
This commit is contained in:
Nick O'Leary 2023-11-30 15:07:58 +00:00 committed by GitHub
commit 55da21ed15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -248,7 +248,7 @@ class Subflow extends Flow {
for (j=0;j<wires.length;j++) { for (j=0;j<wires.length;j++) {
if (wires[j].id != self.subflowDef.id) { if (wires[j].id != self.subflowDef.id) {
node = self.node_map[wires[j].id]; node = self.node_map[wires[j].id];
if (node._originalWires) { if (node && node._originalWires) {
node.wires = clone(node._originalWires); node.wires = clone(node._originalWires);
} }
} }
@ -265,11 +265,13 @@ class Subflow extends Flow {
subflowInstanceModified = true; subflowInstanceModified = true;
} else { } else {
node = self.node_map[wires[j].id]; node = self.node_map[wires[j].id];
if (node) {
node.wires[wires[j].port] = node.wires[wires[j].port].concat(newWires[i]); node.wires[wires[j].port] = node.wires[wires[j].port].concat(newWires[i]);
modifiedNodes[node.id] = node; modifiedNodes[node.id] = node;
} }
} }
} }
}
Object.keys(modifiedNodes).forEach(function(id) { Object.keys(modifiedNodes).forEach(function(id) {
var node = modifiedNodes[id]; var node = modifiedNodes[id];
self.activeNodes[id].updateWires(node.wires); self.activeNodes[id].updateWires(node.wires);
@ -294,10 +296,14 @@ class Subflow extends Flow {
this.node._updateWires(subflowInstanceConfig.wires); this.node._updateWires(subflowInstanceConfig.wires);
} else { } else {
var node = self.node_map[wires[j].id]; var node = self.node_map[wires[j].id];
if (node) {
if (!node._originalWires) { if (!node._originalWires) {
node._originalWires = clone(node.wires); node._originalWires = clone(node.wires);
} }
node.wires[wires[j].port] = (node.wires[wires[j].port]||[]).concat(this.subflowInstance.wires[i]); node.wires[wires[j].port] = (node.wires[wires[j].port]||[]).concat(this.subflowInstance.wires[i]);
} else {
this.error("Unknown node referenced inside subflow: " + wires[j].id)
}
} }
} }
} }
@ -313,11 +319,15 @@ class Subflow extends Flow {
this.node._updateWires(subflowInstanceConfig.wires); this.node._updateWires(subflowInstanceConfig.wires);
} else { } else {
var node = self.node_map[wires[j].id]; var node = self.node_map[wires[j].id];
if (node) {
if (!node._originalWires) { if (!node._originalWires) {
node._originalWires = clone(node.wires); node._originalWires = clone(node.wires);
} }
node.wires[wires[j].port] = (node.wires[wires[j].port]||[]); node.wires[wires[j].port] = (node.wires[wires[j].port]||[]);
node.wires[wires[j].port].push(subflowStatusId); node.wires[wires[j].port].push(subflowStatusId);
} else {
this.error("Unknown node referenced inside subflow: " + wires[j].id)
}
} }
} }
} }