报错排查
在 Duaer 里排查表达式报错「Node hasn't been executed」
Duaer 表达式里引用了一个这次没运行的节点,就会报 Node 'X' hasn't been executed。常见于 If、Switch 分支之后。
为什么会报错
在 Duaer 里,表达式 {{ $("查询客户").item.json.name }} 读的是「查询客户」这次运行的输出。如果它在 If 没走到的分支上,或者在当前节点之后才运行,就没有数据可读,Duaer 报 Node '查询客户' hasn't been executed。
在编辑器里单独测一个节点时也会遇到:前面的节点还没跑过。点「执行前置节点」先跑一遍。
三种修法
- 改连线:把要引用的节点放到当前节点之前的同一条路径上。
- 分支汇合后用 Merge:两条分支先汇到 Merge,再在后面引用 Merge 的输出,而不是某一条分支里的节点。
- 确实可能没运行时先判断:{{ $if($("查询客户").isExecuted, $("查询客户").item.json.name, "") }}。没运行就给空字符串。
常见问题
Duaer 的 isExecuted 是什么?
在 Duaer 表达式里,$("节点名").isExecuted 表示这个节点这次有没有运行,可以配合 $if 避免引用未运行节点时报错。
Duaer 里节点明明运行了还报这个错?
看节点名是否完全一致,Duaer 区分大小写和空格。改过节点名后,旧表达式里的名字不会全部自动跟着改。
同组
表达式
在 Duaer 里用表达式转换数据
Duaer 表达式写在 {{ }} 里,可在支持表达式的参数中调用转换方法。只做字段整理时,先用 Edit Fields(Set)。
节点在 Duaer 里用 If 分成 true 和 false
在 Duaer 里,If 有两个出口:true 和 false。条件写在 Conditions;没接到的那一侧上的条目会丢掉。
节点在 Duaer 里用 Switch 按规则分多路
在 Duaer 里,Switch 默认 Mode 是 Rules。在 Routing Rules 里为每条规则写 Conditions;未匹配且 Fallback Output 为 None 时条目被忽略。
节点在 Duaer 里配置 Merge 节点
在 Duaer 里,Merge 默认 Mode 是 Append,把各输入的条目顺次接成一条输出。按字段合并时改 Mode 为 Combine。