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

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)
}
} }
} }
} }