diff --git a/nodes/core/core/80-function.js b/nodes/core/core/80-function.js index bc6ad2910..c02af92fa 100644 --- a/nodes/core/core/80-function.js +++ b/nodes/core/core/80-function.js @@ -14,59 +14,58 @@ * limitations under the License. **/ -module.exports = function(RED) { - - var util = require("util"); - var vm = require("vm"); - var fs = require('fs'); - var fspath = require('path'); - - function FunctionNode(n) { - RED.nodes.createNode(this,n); - this.name = n.name; - this.func = n.func; - var functionText = "var results = (function(msg){"+this.func+"\n})(msg);"; - this.topic = n.topic; - this.context = {global:RED.settings.functionGlobalContext || {}}; - try { - this.script = vm.createScript(functionText); - this.on("input", function(msg) { - if (msg != null) { - var sandbox = {msg:msg,console:console,util:util,Buffer:Buffer,context:this.context}; - try { - this.script.runInNewContext(sandbox); - var results = sandbox.results; - - if (results == null) { - results = []; - } else if (results.length == null) { - results = [results]; - } - if (msg._topic) { - for (var m in results) { - if (results[m]) { - if (util.isArray(results[m])) { - for (var n in results[m]) { - results[m][n]._topic = msg._topic; - } - } else { - results[m]._topic = msg._topic; +var RED = require(process.env.NODE_RED_HOME+"/red/red"); + +var util = require("util"); +var vm = require("vm"); +var fs = require('fs'); +var fspath = require('path'); + +function FunctionNode(n) { + RED.nodes.createNode(this,n); + this.name = n.name; + this.func = n.func; + var functionText = "var results = (function(msg){"+this.func+"\n})(msg);"; + this.topic = n.topic; + this.context = {global:RED.settings.functionGlobalContext || {}}; + try { + this.script = vm.createScript(functionText); + this.on("input", function(msg) { + if (msg != null) { + var sandbox = {msg:msg,console:console,util:util,Buffer:Buffer,context:this.context}; + try { + this.script.runInNewContext(sandbox); + var results = sandbox.results; + + if (results == null) { + results = []; + } else if (results.length == null) { + results = [results]; + } + if (msg._topic) { + for (var m in results) { + if (results[m]) { + if (util.isArray(results[m])) { + for (var n in results[m]) { + results[m][n]._topic = msg._topic; } + } else { + results[m]._topic = msg._topic; } } } - this.send(results); - - } catch(err) { - this.error(err.message); } + this.send(results); + + } catch(err) { + this.error(err.message); } - }); - } catch(err) { - this.error(err.message); - } + } + }); + } catch(err) { + this.error(err.message); } - - RED.nodes.registerType("function",FunctionNode); - RED.library.register("functions"); } + +RED.nodes.registerType("function",FunctionNode); +RED.library.register("functions");