From bc8683f40ac09fda1c8f48c9e952be8acf5840a6 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 21 Mar 2014 14:05:27 +0000 Subject: [PATCH] Skip non-existent node directories --- red/nodes.js | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/red/nodes.js b/red/nodes.js index e90d104a3..0ac20bbdf 100644 --- a/red/nodes.js +++ b/red/nodes.js @@ -20,6 +20,7 @@ var path = require("path"); var clone = require("clone"); var events = require("./events"); var storage = null; +var settings = null; function getCallerFilename(type) { //if (type == "summary") { @@ -233,7 +234,9 @@ function createNode(node,def) { Node.call(node,def); } -function load(settings) { +function load(_settings) { + settings = _settings; + function scanForNodes(dir) { var pm = path.join(dir,"node_modules"); if (fs.existsSync(pm)) { @@ -269,27 +272,29 @@ function load(settings) { function loadNodes(dir) { var errors = []; - fs.readdirSync(dir).sort().filter(function(fn){ - var stats = fs.statSync(path.join(dir,fn)); - if (stats.isFile()) { - if (/\.js$/.test(fn)) { - try { - require(path.join(dir,fn)); - } catch(err) { - errors.push({fn:fn, err:err}); - //util.log("["+fn+"] "+err); - //console.log(err.stack); + if (fs.existsSync(dir)) { + fs.readdirSync(dir).sort().filter(function(fn){ + var stats = fs.statSync(path.join(dir,fn)); + if (stats.isFile()) { + if (/\.js$/.test(fn)) { + try { + require(path.join(dir,fn)); + } catch(err) { + errors.push({fn:fn, err:err}); + //util.log("["+fn+"] "+err); + //console.log(err.stack); + } + } + } else if (stats.isDirectory()) { + // Ignore /.dirs/, /lib/ /node_modules/ + if (!/^(\..*|lib|icons|node_modules)$/.test(fn)) { + errors = errors.concat(loadNodes(path.join(dir,fn))); + } else if (fn === "icons") { + events.emit("node-icon-dir",path.join(dir,fn)); } } - } else if (stats.isDirectory()) { - // Ignore /.dirs/, /lib/ /node_modules/ - if (!/^(\..*|lib|icons|node_modules)$/.test(fn)) { - errors = errors.concat(loadNodes(path.join(dir,fn))); - } else if (fn === "icons") { - events.emit("node-icon-dir",path.join(dir,fn)); - } - } - }); + }); + } return errors; } var errors = loadNodes(__dirname+"/../nodes");