1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Solved node red not loading without error when subflow is missing

This commit is contained in:
Gerwin van Beek 2023-04-24 11:51:06 +02:00
parent e5d579c1bb
commit 6fbcec8b98
3 changed files with 27 additions and 14 deletions

View File

@ -2095,16 +2095,27 @@ RED.nodes = (function() {
} else if (n.type.substring(0,7) === "subflow") { } else if (n.type.substring(0,7) === "subflow") {
var parentId = n.type.split(":")[1]; var parentId = n.type.split(":")[1];
var subflow = subflow_denylist[parentId]||subflow_map[parentId]||getSubflow(parentId); var subflow = subflow_denylist[parentId]||subflow_map[parentId]||getSubflow(parentId);
if (createNewIds || options.importMap[n.id] === "copy") { if (!subflow){
parentId = subflow.id; node._def = {
node.type = "subflow:"+parentId; color:"#fee",
node._def = registry.getNodeType(node.type); defaults: {},
delete node.i; label: "unknown: "+n.type,
labelStyle: "red-ui-flow-node-label-italic",
outputs: n.outputs|| (n.wires && n.wires.length) || 0,
set: registry.getNodeSet("node-red/unknown")
}
} else {
if (createNewIds || options.importMap[n.id] === "copy") {
parentId = subflow.id;
node.type = "subflow:"+parentId;
node._def = registry.getNodeType(node.type);
delete node.i;
}
node.name = n.name;
node.outputs = subflow.out.length;
node.inputs = subflow.in.length;
node.env = n.env;
} }
node.name = n.name;
node.outputs = subflow.out.length;
node.inputs = subflow.in.length;
node.env = n.env;
} else if (n.type === 'junction') { } else if (n.type === 'junction') {
node._def = {defaults:{}} node._def = {defaults:{}}
node._config.x = node.x node._config.x = node.x

View File

@ -45,11 +45,13 @@ RED.editor = (function() {
var hasChanged; var hasChanged;
if (node.type.indexOf("subflow:")===0) { if (node.type.indexOf("subflow:")===0) {
subflow = RED.nodes.subflow(node.type.substring(8)); subflow = RED.nodes.subflow(node.type.substring(8));
isValid = subflow.valid; if (subflow){
hasChanged = subflow.changed; isValid = subflow.valid;
if (isValid === undefined) {
isValid = validateNode(subflow);
hasChanged = subflow.changed; hasChanged = subflow.changed;
if (isValid === undefined) {
isValid = validateNode(subflow);
hasChanged = subflow.changed;
}
} }
validationErrors = validateNodeProperties(node, node._def.defaults, node); validationErrors = validateNodeProperties(node, node._def.defaults, node);
node.valid = isValid && validationErrors.length === 0; node.valid = isValid && validationErrors.length === 0;

View File

@ -199,7 +199,7 @@ function parseConfig(config) {
if (subflowDetails) { if (subflowDetails) {
var subflowType = subflowDetails[1] var subflowType = subflowDetails[1]
n.subflow = subflowType; n.subflow = subflowType;
flow.subflows[subflowType].instances.push(n) if (flow.subflows[subflowType]) flow.subflows[subflowType].instances.push(n)
} }
if (container) { if (container) {
container.nodes[n.id] = n; container.nodes[n.id] = n;