n8n 新手避坑指南:盘点执行工作流时最常见的 10 个报错与解决方法

2026-01-18 13 0

嘿,朋友!欢迎来到 N8N大学。

n8n 新手避坑指南:盘点执行工作流时最常见的 10 个报错与解决方法

笔者见过太多新手朋友,满怀激情地搭建好工作流,按下 "Execute Workflow" 的那一刻,心却凉了半截——满屏的红色报错,瞬间让人想把键盘砸了。别慌,这都是过来人的必经之路。自动化就像驯兽,它不听话,多半是你指令下错了,或者没给够条件。

今天,作为你的引路人,笔者不讲虚的,直接盘点 n8n 工作流执行时最常见的 10 个报错。咱们不搞长篇大论,只求一针见血,帮你把这 10 只 "拦路虎" 一一拿下。

1. 401 Unauthorized / 403 Forbidden:认证失败

这是最让人头秃的报错,通常出现在 HTTP Request 节点或连接第三方服务(如 Notion, Slack)时。

原因分析:
简单说,就是 "门卫不让你进"。最常见的原因是 API Key 填错了、过期了,或者你请求的 URL 需要特定的 Header(比如 Bearer Token),但你没填。

解决方案:

  • 检查凭据(Credentials): 别复制粘贴时手抖,多看一眼少一行,少看一眼多一行。确保 Key 完整且有效。
  • 手动测试: 别直接在 n8n 里跑,先去 Postman 或者 curl 命令里跑通,确认你的 Key 和 URL 是没问题的。

2. 500 Internal Server Error / 502 Bad Gateway

看到 5 开头的错误码,新手第一反应是:“我 n8n 坏了?”
笔者告诉你:大概率不是你的锅,是对方服务器的锅。

原因分析:
500 意味着对方服务器内部炸了;502 意味着网关超时。通常发生在对方服务繁忙、维护,或者你请求的数据量太大,对方处理不过来直接挂了。

解决方案:

  • 重试机制: 在报错的那个节点设置里,打开 "Retry On Fail"。n8n 会自动在几分钟后重试,通常第二次就通了。
  • 分批处理: 如果你是批量处理数据,一次搞个几千条,对方服务器肯定扛不住。改成小批量、多批次执行。

3. JSON Parse Error: Unexpected token

这个报错通常出现在 Set 节点或者需要处理 JSON 数据的地方。

原因分析:
n8n 的数据流转全是基于 JSON 的。这个报错意味着你把 "非 JSON" 的数据塞进了 "要 JSON" 的地方。比如,API 返回了 HTML 页面而不是 JSON,或者你在表达式里引用了一个 undefined 的变量。

解决方案:

  • 检查上游数据: 在报错节点前加一个 HTTP Request,点开 "Output" 看看返回的到底是啥。如果是 HTML,说明 URL 错了。
  • 善用表达式校验: 在输入框里,多用 {{ $json.property ? $json.property : 'default' }} 这种写法,防止变量不存在导致报错。

4. Execution stopped: Max iteration limit reached

这通常发生在循环节点或者递归调用时。

原因分析:
n8n 为了防止死循环把服务器跑挂,设定了一个 "循环次数上限"。如果你的逻辑没写好,比如 A 调 B,B 又调 A,n8n 就会强制停止。

解决方案:

  • 检查循环逻辑: 确认你的 "Loop Over Items" 是不是真的有终点?
  • 调整设置: 在工作流设置(Workflow Settings)里,可以调整 "Max execution count",但治标不治本,核心还是要修好逻辑。

5. 找不到节点 (Node not found)

在表达式里引用其他节点的数据时,经常会看到这个提示。

原因分析:
你在代码里写了 {{ $node["HTTP Request"].json }},但你把那个 HTTP Request 节点改名了,或者删掉了。

解决方案:

  • 双击检查: 双击引用数据的输入框,点开右侧的 "Expression" 标签,重新在左侧的树状图里点击选择节点。不要手写节点名!
  • 保持命名规范: 给关键节点起个唯一的名字,方便识别。

6. Connection lost: WebSocket closed

点击 "Execute" 后,界面上的小圆圈一直在转,却迟迟不出结果,最后报个 WebSocket 错误。

原因分析:
这是 n8n 的前端通过 WebSocket 和后端通信。如果网络不稳定,或者你使用了 Nginx 反向代理但配置没写对,连接就会断开。虽然连接断了,但后台其实可能还在跑。

解决方案:

  • 检查 Nginx 配置: 如果你是自托管,必须在 Nginx 里加上 WebSocket 的支持配置(主要是 Upgrade 头)。
  • 刷新重连: 有时候只是浏览器卡了,刷新一下页面,去 "Execution History" 里看有没有记录。

7. 数据丢失或获取不到数据

工作流跑完了,日志显示 Success,但就是没得到想要的结果。

原因分析:
这通常是数据流断了。比如前一个节点返回的是数组,你用 Split Out 节点拆分了,结果后面的节点没配置成 "For Each Item",导致只处理了第一条数据。

解决方案:

  • 善用 Mapping 面板: 在节点设置里,看 "Input Data" 面板。确认上一步传过来的数据是啥样的。
  • 检查数据过滤: 是不是中间某个节点用了 IF 节点,把数据过滤没了?

8. 节点一直卡在 "Waiting" 状态

比如 Wait 节点或者 Webhook 回调节点。

原因分析:
n8n 的免费版或社区版,工作流执行是有超时时间的(通常默认 1 小时)。如果你的 Wait 设置了 2 小时,或者 Webhook 等待的回调一直没发回来,执行就会挂起直到超时。

解决方案:

  • 确认超时时间: 检查 Workflow Settings 里的 "Timeout" 设置。
  • Webhook 回调: 确保外部服务真的发送了请求到你的 Webhook URL,用 webhook.site 这种工具先测试外部服务是否正常工作。

9. 数据库连接失败 (PostgreSQL/MySQL)

使用 PostgresMySQL 节点时,报错连接被拒绝。

原因分析:
n8n 容器和数据库容器不在同一个网络,或者数据库没允许外部 IP 访问。本地测试时,很多人习惯写 localhost,但在 Docker 环境里,localhost 指的是容器自己,而不是宿主机。

解决方案:

  • 使用容器名: 如果是 Docker Compose 部署,Host 填数据库的容器名(如 db),不要填 localhost。
  • 检查防火墙: 确认数据库端口(3306/5432)是开放的。

10. "Function" 节点代码报错

写了 JS 代码,执行直接红字报错。

原因分析:
语法错误是小事,大事是 items 的操作不当。n8n 的 Function 节点是基于 Node.js 的,但每次执行的环境是隔离的。如果你试图访问全局变量或者使用了不支持的库,就会报错。

解决方案:

  • 本地调试: 复制你的代码到 VS Code 或在线 JS 编辑器里先跑一下逻辑。
  • 看懂文档: 确认你用的 n8n 版本支持的 Function API。比如老版本和新版本的 return $prepareItem() 写法可能不同。

FAQ:新手常见疑问

Q1: 为什么我的工作流在测试时好好的,一保存自动跑就报错?
A: 检查你的输入数据。手动点击 "Execute" 时,你可能手动填入了测试数据,或者引用了当前页面的上下文。自动执行时,这些上下文没了,数据源可能就空了。

Q2: 报错信息全是英文,看不懂怎么办?
A: 也就是那几个关键词:Timeout(超时)、Unauthorized(未授权)、Invalid(无效)、Cannot find module(找不到模块)。直接把关键词复制到翻译软件,或者去 N8N大学 搜一下,基本都有解。

Q3: n8n 报错和 Zapier 报错有什么不同?
A: Zapier 报错通常很友好,会告诉你 "App Error"。n8n 因为是底层工具,报错往往直接甩给你一行代码或 HTTP 状态码。虽然硬核,但也意味着你能排查得更深,这是 n8n 强大的地方。

总结与资源

报错是自动化路上最好的老师。遇到报错不要怕,先看日志,再看输入输出数据,最后查网络。记住,n8n 只是一个工具,逻辑通了,它就通了。

如果你在 n8n 的路上还有其他困惑,欢迎常回 N8N大学 (n8ndx.com) 看看。这里有最硬核的教程,也有最温暖的社区。去吧,去驯服你的工作流!

相关文章

寻找免费的 Zapier 替代品?深度解析 n8n 社区版为何是最佳选择
不只是 n8n!2025年值得关注的 5 款开源自动化工具推荐与评测
省钱攻略:如何将 Zapier 自动化工作流无缝迁移到 n8n?
防止数据丢失:n8n 工作流与凭证(Credentials)的自动备份方案
Node.js 开发者首选:使用 npm 全局安装 n8n 及 PM2 进程守护教程
本地部署痛点解决:配合 Cloudflare Tunnel 实现 n8n 外网远程访问

发布评论