【问题标题】:Node-RED Handle error from node that throws no standardexceptionNode-RED 处理来自未引发标准异常的节点的错误
【发布时间】:2020-09-04 07:03:29
【问题描述】:

我想使用 Pushover 节点发送通知。我已经通过 curl 使用它一段时间了,很少有一些消息没有发送。这就是我在 bash 中的原因

echo "$curlOutput" | grep -qP '{"status":1' 
if [ ! $? -eq 0 ] 
then
    echo "$2" | mail --append "Content-Type: text/plain; charset=UTF-8" -s "$1" name@company.com
fi

捕获错误,然后通过电子邮件发送消息。

现在我想在 Node-Red 中做一些类似的事情。如果通过sudo iptables -A OUTPUT -d 104.20.0.0/16 -m comment --comment "Pushovertest" -j REJECT 模拟网络错误,则出于测试目的

成功阻止。在 node-red-log 我看到

5 月 18 日 13:46:24 - [错误] [pushover:252a17dc.1239d8] 错误:连接 ECONNREFUSED 104.20.125.71:443

现在看看这个 Node-RED 流程

错误显示在调试窗口中,来自 pushover 节点。 catch节点没有捕捉到期望,显然是因为pushover没有使用异常框架https://developer.ibm.com/recipes/tutorials/nodered-exception-handling-framework/

第一个测试通过:记录了一个错误。但是在这种情况下,我该如何应对 Node-RED 中的这个错误来做其他事情呢?

【问题讨论】:

    标签: error-handling node-red pushover


    【解决方案1】:

    我会通过查看源代码来猜测错误来自10357-pushover.js 文件。

    在这一行对node.error() 的调用不会推送传入的msg 对象,因此它不会被传递到catch 节点。 node.error()函数有2个签名,第一个只取错误消息,第二个取错误消息和传入的msg对象,只有第二个转发错误,msg对象传递给catch节点.

    请随时提交拉取请求以更新此节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多