跳转至

处理工作流中的错误#

有时您构建了一个好的工作流,但在尝试执行时它却失败了。工作流执行可能由于各种原因而失败,从节点配置错误或第三方服务故障等直接问题到更神秘的错误。

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

检查失败的工作流#

n8n 跟踪您工作流的执行。

当您的工作流之一失败时,您可以检查执行日志以查看出了什么问题。执行日志显示您已保存工作流的最新执行时间、状态、模式和运行时间列表。

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

要调查列表中的特定失败执行,请选择名称或在您悬停在相应执行行上时显示的查看按钮。

Executions log
Executions log

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

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

Workflow execution view
Workflow execution view

捕获错误的工作流#

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

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

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

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

错误工作流

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

练习#

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

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

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

Error workflow

要检查节点的配置,您可以复制下面的 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
					}
				]
			]
		}
	}
}

在工作流中抛出异常#

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

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

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

何时抛出错误

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

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

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

尽管这种无效数据可能不会立即导致工作流失败,但它可能会在后面引起问题,然后就很难追踪源错误。这就是为什么在您知道可能有问题的时候抛出错误是更好的做法。

Stop and Error node with error message
Stop and Error node with error message
此页面是否
💬 微信

🚀 与作者交流

关注公众号
n8n实战笔记公众号
n8n实战笔记
📚 教程 💡 案例 🔧 技巧
添加微信
添加作者微信
1对1 专业指导
⚡ 快答 🎯 定制 🚀 支持