Duaer

报错排查

在 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。

在编辑器里单独测一个节点时也会遇到:前面的节点还没跑过。点「执行前置节点」先跑一遍。

三种修法

  1. 改连线:把要引用的节点放到当前节点之前的同一条路径上。
  2. 分支汇合后用 Merge:两条分支先汇到 Merge,再在后面引用 Merge 的输出,而不是某一条分支里的节点。
  3. 确实可能没运行时先判断:{{ $if($("查询客户").isExecuted, $("查询客户").item.json.name, "") }}。没运行就给空字符串。

常见问题

Duaer 的 isExecuted 是什么?

在 Duaer 表达式里,$("节点名").isExecuted 表示这个节点这次有没有运行,可以配合 $if 避免引用未运行节点时报错。

Duaer 里节点明明运行了还报这个错?

看节点名是否完全一致,Duaer 区分大小写和空格。改过节点名后,旧表达式里的名字不会全部自动跟着改。

同组