Node-RED中如何捕获node-red-contrib-composer节点的MVCC_READ_CONFLICT错误?
解决Node-RED中composer节点错误无法被Catch节点捕获的问题
你猜的完全没错——这个问题根源就是node-red-contrib-composer节点的错误处理代码只调用了node.error(error.message),没有传入当前的msg对象。Node-RED的Catch节点默认只会捕获关联到具体消息对象的错误,这种不带msg的错误自然会被忽略。下面给你两种可行的解决思路:
方法一:修改composer节点源码(彻底解决)
找到node-red-contrib-composer的安装目录(一般在~/.node-red/node_modules/node-red-contrib-composer),定位到错误处理的代码段,把原来的:
.catch((error) => { node.error(error.message); });
改成:
.catch((error) => { node.error(error.message, msg); });
修改后错误会和当前msg对象绑定,你的Catch节点不用额外配置就能捕获到这个错误,后续直接用它触发其他流程即可。
方法二:调整Catch节点配置(无需改源码)
如果不想动节点源码,可以直接修改Catch节点的设置:
- 双击打开你的Catch节点
- 在「捕获来自」选项里,选择「所有节点」或者直接指定那个composer节点
- 勾选「捕获未关联到消息的错误」选项
- 保存配置并重新部署流程
这样Catch节点就能捕获到composer节点抛出的无关联错误了。之后你可以把Catch节点的输出连到Link Out节点,再在目标标签页用Link In节点接收,就能触发另一流程的执行。
内容的提问来源于stack exchange,提问作者Akshay Jindal
相关产品推荐
相关产品推荐

