Skip to content

处理工作流中的错误#

有时您构建了一个完美的工作流,但在执行时却失败了。工作流执行失败可能有多种原因,从简单的节点配置错误或第三方服务故障,到更神秘的错误都有可能。

但请不要惊慌。在本课程中,您将学习如何排查错误,以便尽快让工作流恢复正常运行。

检查失败的工作流#

n8n 会跟踪记录您的工作流执行情况。

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

通过左侧面板选择 执行记录 即可打开执行日志。

要调查列表中特定的失败执行记录,请选择该执行记录的名称或悬停在该行时出现的 查看 按钮。

执行日志
执行日志

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

要切换查看执行视图和编辑器视图,请选择页面顶部的 编辑器 | 执行记录 按钮。

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

捕获出错的工作流#

要捕获失败的工作流,请使用 Error Trigger 节点 创建一个单独的 错误处理工作流。该工作流仅在主工作流执行失败时才会运行。

在您的错误处理工作流中添加有意义的额外节点,例如使用电子邮件或 Slack 发送关于失败工作流及其错误的通知。

要接收失败工作流的错误消息,请在工作流设置中将错误处理工作流设置为使用Error Trigger 节点的工作流。

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

错误处理工作流

  • 如果工作流使用了 Error Trigger 节点,您无需激活该工作流
  • 如果工作流包含 Error Trigger 节点,默认情况下该工作流会将自身作为错误处理工作流
  • 手动运行工作流时无法测试错误处理工作流。Error Trigger 仅在自动工作流出错时运行
  • 您可以为多个工作流设置相同的错误处理工作流

练习#

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

  1. 创建一个新的错误工作流。
  2. 添加 Error Trigger 节点
  3. 将你选择的通信平台节点(如 SlackDiscordTelegram,甚至是 Gmail 或更通用的 Send Email)连接到 Error Trigger 节点。
  4. 在你要监控的工作流中,打开 工作流设置 并选择你刚创建的新错误工作流。注意:该工作流需要自动运行才能触发错误工作流。
显示解决方案

本练习的工作流如下所示:

错误工作流

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

 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 and Error 节点。该节点会抛出一个错误,您可以指定错误类型:

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

Stop and Error 节点只能作为工作流中的最后一个节点使用。

何时抛出错误

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

当您处理来自第三方服务的数据时,可能会遇到以下问题:

  • JSON 输出格式错误
  • 数据类型错误(例如数值数据包含非数字值)
  • 缺失值
  • 远程服务器返回的错误

虽然这类无效数据可能不会立即导致工作流失败,但可能会在后期引发问题,届时将难以追踪源头错误。因此最好在发现问题时就抛出错误。

带有错误信息的 Stop and Error 节点
带有错误信息的 Stop and Error 节点