Skip to content

处理工作流程中的错误

有时,您构建了一个不错的工作流,但在尝试执行时却失败了。工作流执行失败的原因多种多样,从简单的节点配置错误、第三方服务故障,到一些更神秘的错误,不一而足。

但不要惊慌。在本课中,您将学习如何排除错误,以便尽快启动并运行您的工作流程。

检查失败的工作流程

n8n 跟踪您的工作流程的执行情况。

当您的某个工作流失败时,您可以检查执行日志来了解问题所在。执行日志会显示已保存工作流的最新执行时间、状态、模式和运行时间的列表。

通过选择左侧面板中的执行来打开执行日志。

要从列表中调查特定的失败执行,请选择名称或将鼠标悬停在相应执行的行上时出现的“查看”按钮。

处决日志
处决日志

这将以只读模式打开工作流,您可以在其中查看每个节点的执行情况。这种表示可以帮助您识别工作流在哪个环节遇到了问题。

要在查看执行和编辑器之间切换,请选择页面顶部的编辑器 | 执行按钮。

工作流执行视图
工作流执行视图

捕获错误工作流程

要捕获失败的工作流,请使用“错误触发器”节点创建一个单独的“错误工作流” 。此工作流仅在主工作流执行失败时才会执行。

错误工作流中使用有意义的附加节点,例如使用电子邮件或 Slack 发送有关失败的工作流及其错误的通知。

要接收失败工作流的错误消息,请将工作流设置中的错误工作流设置为使用错误触发节点的错误工作流。

常规工作流与错误工作流的唯一区别在于后者包含一个错误触发节点。在将其设置为其他工作流的指定错误工作流之前,请确保先创建此节点。

错误工作流程

  • 如果工作流使用错误触发器节点,则不必激活该工作流。
  • 如果工作流包含错误触发器节点,则默认情况下,工作流将使用自身作为错误工作流。
  • 手动运行工作流时,无法测试错误工作流。错误触发器仅在自动工作流出现错误时运行。
  • 您可以为多个工作流设置相同的错误工作流。

锻炼

在前面的章节中,您已经构建了几个小型工作流。现在,选择其中一个要监视的工作流,并为其创建一个错误工作流:

  1. 创建一个新的错误工作流。
  2. 添加错误触发节点
  3. 将您选择的通信平台的节点连接到错误触发节点,例如SlackDiscordTelegram ,甚至Gmail或更通用的发送电子邮件
  4. 在您要监控的工作流中,打开“工作流设置” ,然后选择您刚刚创建的新错误工作流。请注意,此工作流需要自动运行才能触发错误工作流。
Show me the solution

本练习的工作流程如下:

错误工作流程

要检查节点的配置,您可以复制下面的 JSON 工作流代码并将其粘贴到编辑器 UI 中:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{
	"nodes": [
		{
			"parameters": {},
			"name": "Error Trigger",
			"type": "n8n-nodes-base.errorTrigger",
			"typeVersion": 1,
			"position": [
				720,
				-380
			]
		},
		{
			"parameters": {
				"channel": "channelname",
				"text": "=This workflow {{$node[\"Error Trigger\"].json[\"workflow\"][\"name\"]}}failed.\nHave a look at it here: {{$node[\"Error Trigger\"].json[\"execution\"][\"url\"]}}",
				"attachments": [],
				"otherOptions": {}
			},
			"name": "Slack",
			"type": "n8n-nodes-base.slack",
			"position": [
				900,
				-380
			],
			"typeVersion": 1,
			"credentials": {
				"slackApi": {
					"id": "17",
					"name": "slack_credentials"
				}
			}
		}
	],
	"connections": {
		"Error Trigger": {
			"main": [
				[
					{
						"node": "Slack",
						"type": "main",
						"index": 0
					}
				]
			]
		}
	}
}

在工作流中抛出异常

另一种排除工作流故障的方法是在工作流中添加“停止和错误”节点。此节点会抛出错误。您可以指定错误类型:

  • 错误消息:返回有关错误的自定义消息
  • 错误对象:返回错误类型

您只能使用“停止和错误”节点作为工作流中的最后一个节点。

何时抛出错误

使用Stop 和 Error 节点抛出异常对于验证节点的数据(或有关数据的假设)并返回自定义错误消息很有用。

如果您使用来自第三方服务的数据,您可能会遇到以下问题:

  • JSON 输出格式错误
  • 类型错误的数据(例如,具有非数字值的数字数据)
  • 缺失值
  • 来自远程服务器的错误

虽然这类无效数据可能不会立即导致工作流失败,但它可能会在之后引发问题,并且追踪错误源会变得困难。因此,最好在发现可能存在问题时就抛出错误。

带有错误消息的“停止”和“错误”节点
带有错误消息的“停止”和“错误”节点