node.js - 在 node-red 中没有生成节点
问题描述
我尝试通过创建新节点来解决 Node-red 中提出的问题:自定义节点等待丢失的类型。
我尝试使用“mqtt.js 示例”来获取预配置的 mqtt-client/subscriber 以添加到我的调色板中。
因此,在节点文件夹中,我有一个名为 mqttConfig.json 的配置文件,其中放置了 mqtt.js 用于建立连接的所有数据(即代理、主题、qos ...),该文件的结构是相同的和上一个一样。
{
"receiver": {
"broker":"127.0.0.1",
"topic":"topicRec",
"qos":"2"
}
}
然后我创建新的 preconf_mqtt.js 即:
var mqtt = require("/usr/local/lib/node_modules/node-red/node_modules/mqtt");
var mqttConfig = require("mqttConfig");
'use strict'
module.exports = function(RED)
{
function ConfiguredMqttOutNode(config)
{
RED.nodes.createNode(this,config);
var node = this;
var m = mqttConf.receiver;
this.topic = m.topic;
this.qos = parseInt(m.qos);
if (isNaN(this.qos) || this.qos < 0 || this.qos > 2)
this.qos = 2;
this.broker = m.broker;
this.client = mqtt.connect(this.broker);
this.client.subscribe(this.topic);
this.client.on('message', function (topic, message) {
var msg = {};
msg.topic = this.topic;
msg.payload = JSON.stringify(message);
node.send(msg);
});
}
RED.nodes.registerType("configured-mqtt-out",ConfiguredMqttOutNode);
}
而 preconf_mqtt.html 即:
<script type="text/javascript">
RED.nodes.registerType('configured-mqtt-out',{
category: 'processing',
color: '#a6bbcf',
defaults: {
name: {value:""}
},
inputs:0,
outputs:1,
icon: "bridge.png",
label: function()
{
return this.name||"c-mqtt-out";
}
});
</script>
<script type="text/x-red" data-template-name="configured-mqtt-out">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/x-red" data-help-name="configured-mqtt-out">
<p>Pre-configured MQTT subscriber</p>
</script>
无论我何时尝试安装程序:
ute@preprocnr:~/.node-red$ sudo npm install /home/ute/mqtt_rules_definer
> node-red-dashboard@2.9.1 postinstall /home/ute/.node-red/node_modules/node-red-dashboard
> node fixfa.js
node-red-project@0.0.1 /home/ute/.node-red
├─┬ mqtt@2.18.0
│ ├─┬ concat-stream@1.6.2
│ │ └─┬ readable-stream@2.3.6
│ │ ├── isarray@1.0.0
│ │ └── string_decoder@1.1.1
│ ├─┬ help-me@1.1.0
│ │ ├─┬ glob-stream@6.1.0
│ │ │ ├─┬ ordered-read-streams@1.0.1
│ │ │ │ └─┬ readable-stream@2.3.6
│ │ │ │ ├── isarray@1.0.0
│ │ │ │ └── string_decoder@1.1.1
│ │ │ ├─┬ pumpify@1.5.0
│ │ │ │ └── pump@2.0.1
│ │ │ └─┬ readable-stream@2.3.6
│ │ │ ├── isarray@1.0.0
│ │ │ └── string_decoder@1.1.1
│ │ └─┬ through2@2.0.3
│ │ └─┬ readable-stream@2.3.6
│ │ ├── isarray@1.0.0
│ │ └── string_decoder@1.1.1
│ ├─┬ mqtt-packet@5.6.0
│ │ └─┬ bl@1.2.2
│ │ └─┬ readable-stream@2.3.6
│ │ ├── isarray@1.0.0
│ │ └── string_decoder@1.1.1
│ ├─┬ readable-stream@2.3.6
│ │ ├── isarray@1.0.0
│ │ └── string_decoder@1.1.1
│ └─┬ websocket-stream@5.1.2
│ ├─┬ duplexify@3.6.0
│ │ └─┬ readable-stream@2.3.6
│ │ ├── isarray@1.0.0
│ │ └── string_decoder@1.1.1
│ └─┬ readable-stream@2.3.6
│ ├── isarray@1.0.0
│ └── string_decoder@1.1.1
├── mqtt_rules_definer@1.0.0 extraneous
├── node-red-dashboard@2.9.1 extraneous
└── rule-definer@1.0.0 extraneous
npm WARN node-red-project@0.0.1 No repository field.
npm WARN node-red-project@0.0.1 No license field.
ute@preprocnr:~/.node-red$ node-red
当我启动它时,node-red 没有显示任何特定的错误/警告:
16 May 15:21:23 - [info]
Welcome to Node-RED
===================
16 May 15:21:23 - [info] Node-RED version: v0.18.4
16 May 15:21:23 - [info] Node.js version: v4.2.6
16 May 15:21:23 - [info] Linux 4.4.0-124-generic x64 LE
16 May 15:21:23 - [info] Loading palette nodes
16 May 15:21:23 - [info] Dashboard version 2.9.1 started at /ui
16 May 15:21:23 - [warn] ------------------------------------------------------
16 May 15:21:23 - [warn] [node-red/rpi-gpio] Info : Ignoring Raspberry Pi
specific node
16 May 15:21:23 - [warn] [node-red-node-twitter/twitter] ReferenceError:
Invalid left-hand side in assignment
16 May 15:21:23 - [warn] ------------------------------------------------------
16 May 15:21:23 - [info] Settings file : /home/ute/.node-red/settings.js
16 May 15:21:23 - [info] User directory : /home/ute/.node-red
16 May 15:21:23 - [info] Server now running at http://127.0.0.1:1880/
16 May 15:21:23 - [info] Active project : pre-proc
16 May 15:21:23 - [info] Flows file : /home/ute/.node-red/projects/pre- proc/preprocessor.json
但是该节点不在我的调色板中,我不知道该怎么做才能修复它。请帮帮我, 亲切的问候, Gianluca
[编辑] 我忘了在包中添加节点:S 我有它,然后我收到以下警告,开始 node-red:
16 May 16:36:41 - [warn] ------------------------------------------------------
16 May 16:36:41 - [warn] [node-red/rpi-gpio] Info : Ignoring Raspberry Pi specific node
16 May 16:36:41 - [warn] [node-red-node-twitter/twitter] ReferenceError:
Invalid left-hand side in assignment
16 May 16:36:41 - [warn] [mqtt_rules_definer/mqtt_rules_definer] SyntaxError: Unexpected token .
16 May 16:36:41 - [warn] ------------------------------------------------------
并且没有生成节点...
解决方案
错误消息很清楚,您的mqtt_rules_definer.js
文件中有语法错误(您的.
代码中某处放错了位置)。您需要在 Node-RED 加载它之前修复它。
找出问题所在的最快方法是执行以下操作:
- 切换到 ~/.node-red 目录
- 在命令之后运行没有文件的节点
$ node
这将启动一个交互式 shell,然后您可以输入以下内容:
require('mqtt_rules_definer')
- 然后,这应该打印一个堆栈跟踪,其中包含文件中错误所在位置的详细信息。
推荐阅读
- python - 更改 django auth 表单密码字段错误消息
- reactjs - × TypeError: Cannot read properties of undefined (reading 'uid')
- xamarin.forms - 有没有办法通过 MenuPage 将下拉菜单设置在右侧而不是左侧?
- css - 导航栏链接扩展引导
- sql - 根据条件创建一个包含列名数组的新列
- html - CSS中的条件?
- javascript - axios如何实时获取文件传输速度?
- c# - 处理来自 pgina 的 OTP
- vba - 使用循环从文本框中填充全局变量以在 Access VBA 中的变量和文本框之间进行更改
- google-cloud-storage - 将数据库生成的excel报告从应用程序上传到谷歌云进行存储是一种好习惯吗?