我添加了一个自编写的WebSocket-Client库。当我在node.js中require
时,它工作正常,就像在Node-RED的函数节点中一样,在settings.js
中注册它并由global.get("RWSjs")
要求它。
现在我必须自己编写一个Node并想要这个文件,但它不起作用。 Node-RED总是给我一个未部署的"节点"错误,我认为是因为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);
}
答案 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);
}