From ea89aff3dbe6f1eefd0b388f1d864eaa602fc791 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Sat, 20 Sep 2014 22:25:00 +0100 Subject: [PATCH] Handle node-load errors properly Fixes #403 Certain load errors were causing start-up to fail. In particular, an npm module with a missing .js file. --- red/nodes/registry.js | 61 +++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/red/nodes/registry.js b/red/nodes/registry.js index 6e507f758..02767d03a 100644 --- a/red/nodes/registry.js +++ b/red/nodes/registry.js @@ -311,6 +311,8 @@ function getNodeFiles(dir) { } } } + valid = valid && fs.existsSync(path.join(dir,fn.replace(/\.js$/,".html"))) + if (valid) { result.push(path.join(dir,fn)); } @@ -383,7 +385,10 @@ function loadNodesFromModule(moduleDir,pkg) { for (var n in nodes) { if (nodes.hasOwnProperty(n)) { var file = path.join(moduleDir,nodes[n]); - results.push(loadNodeConfig(file,pkg.name,n)); + try { + results.push(loadNodeConfig(file,pkg.name,n)); + } catch(err) { + } var iconDir = path.join(moduleDir,path.dirname(nodes[n]),"icons"); if (iconDirs.indexOf(iconDir) == -1) { if (fs.existsSync(iconDir)) { @@ -440,27 +445,35 @@ function loadNodeConfig(file,module,name) { } else { node.name = path.basename(file) } - - var content = fs.readFileSync(node.template,'utf8'); - - var types = []; - - var regExp = /