每个流程的日志如何输出(已解决)
-
我在流程中使用node.error()输出日志,在哪个地方可以查看,debug tab里面没有,服务器控制台也没有
-
@stayfool
如果是function
节点里面写 javascript 的话
node.warn()
和node.error()
都是可以打印在右侧debug
标签里的
其他 debug 需求可以使用绿色的debug
节点如下图:
-
我这边function里面写了node.error(), debug里面也没有输出,debug 节点会在DEBUG tab里面输出?
-
@stayfool 有可能是你的流程没有被触发,所以
function
里的代码并没有执行。
可以尝试任意 inject 一个信息到输入端,手动触发一下。
或者方便的话可以贴上你的 app url
-
@librae 对的,流程没触发,现在可以了
-
👍 gogogo 一起做点有意思的东西
-
@librae gauge这个node总是拿不到值,前一个node传一个msg,msg.payload.value = 5,然后我在gauge里的valueformat添{{value}},拿不到值,{{msg.payload.value}}也拿不到
-
在哪个 app 里,给个链接我进去帮你看看哈
-
-
@stayfool
我在 public/cpu 里面添加了一个和你一样流程,你看看呢[{"id":"fd477a54.18bce8","type":"function","z":"80899c1b.400f9","name":"","func":"msg.payload = (Math.random()*100).toFixed(2);\nreturn msg;","outputs":1,"noerr":0,"x":280,"y":460,"wires":[["d755c4f.7a1c338"]]},{"id":"d755c4f.7a1c338","type":"ui_gauge","z":"80899c1b.400f9","name":"","group":"e69f0476.32d208","order":0,"width":0,"height":0,"gtype":"gage","title":"usage","label":"","format":"{{msg.payload}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"x":470,"y":460,"wires":[]},{"id":"e82bcd.802c643","type":"ui_button","z":"80899c1b.400f9","name":"","group":"e69f0476.32d208","order":0,"width":0,"height":0,"label":"button","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":100,"y":440,"wires":[["fd477a54.18bce8"]]},{"id":"e69f0476.32d208","type":"ui_group","z":"","name":"Group 3","tab":"11b850ad.3de17f","order":3,"disp":true,"width":"6"},{"id":"11b850ad.3de17f","type":"ui_tab","z":"","name":"Home","icon":"dashboard","order":1}]
-
@librae 你去看下mem那个,一样的配置就是不行
-
@stayfool 有可能是 gauge 节点的 bug,有待考究。我改成
msg.payload
好使了
-
@librae 而且当前的值也不显示
-
@librae said in 每个流程的日志如何输出:
@stayfool 有可能是 gauge 节点的 bug,有待考究。我改成
msg.payload
好使了用
msg.payload
并不是正确的用法,看起来这不是一个 bug,正确的姿势是{{value}}
如gauge
节点描述:这样以来,数值是可以显示的
-
@librae 值是放在msg.payload还是msg.payload.value
-
@stayfool 我没去看过 gauge 的实现。不过猜测它是把从输入过来的 msg.payload 里面的内容直接拿过去处理了。
所以值直接放在 msg.payload 里面就对了,但如果是放在 msg.payload.mem 这样的话,相当于 msg.payload 变成了一个 object,行为就未知了。
-
-
@stayfool said in 每个流程的日志如何输出:
找到问题了,我把
Node-RED
升级到0.16.2
测试了一下,debug 标签报这个错[error] [function:bd068608.18f6a8] SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
看起来有什么问题导致不支持这几个关键字。有可能是由于
Node-RED
自身更新引出。
目前正在勾搭Node-RED
作者寻求答案:
Node-RED Slack所以目前临时的解决方案是避免使用这几个关键字。
-
@stayfool 试试在 function 节点的最前面加上 "use strict"; 呢
-
已验证过,如果需要使用
let
等关键字,需要定义 function 并在其内添加"use strict";
,流程方可正常执行。例如:function log() { "use strict"; let i = 1; node.warn(i); } log(); return msg;
如此是可以在 debug 标签内正常输出日志的。
stack overflow 上也有类似问题同样的解决办法。