自写Node-RED节点中require(<module>)的问题

时间:2016-08-25 13:42:26

标签: javascript node.js require node-red

我添加了一个自编写的WebSocket-Client库。当我在node.js中require时,它工作正常,就像在Node-RED的函数节点中一样,在settings.js中注册它并由global.get("RWSjs")要求它。

现在我必须自己编写一个Node并想要这个文件,但它不起作用。 Node-RED总是给我一个未部署的&#34;节点&#34;错误,我认为是因为javascript语法错误。

如何在自编写的节点中使用自编写的模块?js?

非常感谢,彼得:)

编辑:

一些代码:

eval-R-char.js(节点代码)

module.exports = function(RED) {               

    // doesn't work:
    var RWSjs = global.get("RWSjs");

    function EvalRCharNode(config) {            
        RED.nodes.createNode(this,config);      

        this.instruction = config.instruction;
        var node = this;
        this.on('input', function(msg) {        
            //msg.payload = msg.payload.toLowerCase();
            msg.payload = "Instruction: " + this.instruction;
            node.send(msg);                     
        });                                     
    }
    RED.nodes.registerType("eval-R-char",EvalRCharNode); 
}

1 个答案:

答案 0 :(得分:1)

在编写自己的节点时,不应该将上下文用于require模块,这纯粹是一种解决方法,因为您无法在函数节点中使用require

您应该在自定义节点中正常require

所以在这种情况下:

module.exports = function(RED) {               

    //assuming your module is in the RWS.js file in the same directory
    var RWSjs = require('./RWS.js');

    function EvalRCharNode(config) {            
        RED.nodes.createNode(this,config);      

        this.instruction = config.instruction;
        var node = this;
        this.on('input', function(msg) {        
            //msg.payload = msg.payload.toLowerCase();
            msg.payload = "Instruction: " + this.instruction;
            node.send(msg);                     
        });                                     
    }
    RED.nodes.registerType("eval-R-char",EvalRCharNode); 
}