项目链接错误#
在 n8n 中,你可以引用任意前序节点中的数据。这个节点不一定是紧邻的前一个节点,而是可以是工作流链中的任何先前节点。当你引用更早的节点时,需使用表达式语法 $(node_name).item。
不同项目的线程示意图。由于存在项目链接(item linking),你可以通过 $('Get famous movie actors').item 获取每部电影对应的演员。
由于前序节点可能包含多个项目(items),n8n 需要知道应使用哪一个。当你使用 .item 时,n8n 会在后台自动为你确定正确的项目。有关其工作原理的详细信息,请参考 项目链接概念(Item linking concepts)。
当信息缺失时,.item 会失败。为了确定使用哪个项目,n8n 会为每个项目维护一条贯穿工作流各节点的“线程”(thread)。对于某个给定的项目,这条线程指明了它是如何由前序节点中的哪些项目生成的。为了在指定的前序节点中找到匹配的项目,n8n 会沿着该线程回溯,直到到达目标节点。
当使用 .item 时,如果出现以下情况,n8n 将显示错误:
- 线程中断(the thread is broken)
- 线程指向前序节点中的多个项目(因为无法确定应使用哪一个)
要解决这些错误,你可以选择避免使用 .item,或者修复根本原因。
你可以改用 .first()、.last() 或 .all()[index] 来替代 .item。这些方法要求你明确目标节点输出项中所需项的位置。有关这些方法的更多细节,请参考 内置方法和变量 | 其他节点的输出。
根本原因的修复方式取决于具体的错误类型。
修复“前一个节点缺少表达式所需信息”错误#
如果你看到以下错误信息:
ERROR: Info for expression missing from previous node(前一个节点缺少表达式所需信息)
这意味着在节点链中存在某个节点未返回配对信息。解决方案取决于前一个节点的类型:
- 代码节点(Code nodes):请确保返回该节点在生成每个输出项时所使用的输入项。更多信息请参见 代码节点中的项链接(Item linking in the code node)。
- 自定义或社区节点(Custom or community nodes):需要节点创建者更新节点,使其返回生成每个输出项所使用的输入项。更多信息请参见 节点创建者的项链接指南(Item linking for node creators)。
修复“表达式匹配到多个项”错误#
这是错误提示信息:
ERROR: Multiple matching items for expression(表达式匹配到多个项)
有时 n8n 会使用多个输入项来生成单个输出项。例如 Summarize(摘要)、Aggregate(聚合)和 Merge(合并)节点,它们都可能将多个项的信息合并为一项。
当你使用 .item 且存在多个可能匹配项时,n8n 无法确定应使用哪一个。解决此问题的方法有两种:
- 改用
.first()、.last()或.all()[index]。有关这些方法的更多细节,请参考 内置方法和变量 | 其他节点的输出。 - 引用另一个包含相同信息但不会产生多个匹配项的节点。