目录

n8n 常见问题与故障排除

工作流没有自动运行

  • 是否已经点击 Publish(n8n 1.x 中是 Active 开关)?只点击 Save 不会让触发器运行。
  • 修改后是否重新发布?
  • 计划时间是否正确?见下一题。
  • 到 Executions 查看是否有失败记录。

计划时间相差 8 小时

n8n 未设置时区,默认使用 UTC。设置环境变量 GENERIC_TIMEZONE=Asia/Taipei 并重新启动,或在工作流的 Settings → Timezone 中指定。

Webhook URL 显示 localhost

在部署设置中添加外部 URL:

N8N_WEBHOOK_URL=https://n8n.example.com/

(n8n 2.30 之前的版本使用 WEBHOOK_URL。)同时确认 N8N_HOST 和 N8N_PROTOCOL 正确,见自托管部署。

Webhook 节点显示 Test URL 和 Production URL
Webhook 节点:上方可以切换 Test URL 和 Production URL。这里显示的 URL 是 localhost,表示尚未设置外部 URL

Webhook 返回 404

  • 使用 Test URL 时,需要先点击 Listen for test event,而且只能接收一次。
  • 使用 Production URL 时,工作流必须已发布。
  • 确认 HTTP 方法(GET / POST)与设置一致。

详见 Webhook 教程。

节点运行了很多次

上游节点输出了多个 items,下游节点会对每个 item 运行一次。不想重复运行时,在节点的 Settings 中启用 Execute Once,或先用 Aggregate 合并数据。见数据结构与 items。

Google 授权失败:redirect_uri_mismatch

Google Cloud 中设置的“已获授权的重定向 URI”和 n8n 显示的 OAuth Redirect URL 不一致。复制 n8n 凭据页面上的 URL,完整粘贴到 Google Cloud 中。如果 n8n 显示的是 localhost,先修正部署的 URL 设置。见凭据管理。

Google 授权每隔几天就失效

Google Cloud 的 OAuth 应用处于“测试”状态时,授权的有效期较短。可以将应用发布为正式版本。

通过 http://(非 HTTPS)从非 localhost 地址连接时会发生此问题。正式使用请设置 HTTPS;只在内网测试时可以暂时设置 N8N_SECURE_COOKIE=false。

内存不足(JavaScript heap out of memory)

通常是一次处理的数据太多或文件太大:

  • 使用 Loop Over Items 分批处理
  • 拆分为子工作流(子流程结束后会释放内存)
  • 只保留需要的字段(在 Edit Fields 中启用 Keep Only Set Fields)
  • 增加主机内存

数据库越来越大

执行记录会保存每个节点的完整数据。设置自动清理:

EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168    # 保留 7 天(单位:小时)

也可以在工作流的 Settings 中设置“不保存成功的执行数据”。

表达式显示 undefined 或错误

  • 先运行前面的节点,表达式预览才会有数据。
  • 使用 ?. 避免中间层不存在:{{ $json.address?.city }}。
  • 读取更早的节点要用 $('节点名称'),而不是 $json。

见表达式教程。

Code 节点无法读取 $env

n8n 2.x 默认禁止 Code 节点读取环境变量。建议将需要的值改存为凭据,或在节点参数中传入。

更新后工作流出错

检查版本说明中的破坏性变更。如果无法立即修复,可以将镜像版本改回旧版并还原数据库备份(数据库迁移通常无法反向执行,因此更新前的备份很重要)。见备份与更新。

去哪里找示例?

  • n8n 官网的 Templates 页面有数千个社区分享的工作流模板,可以直接导入使用。
  • n8n 官方社区论坛有大量问答,遇到错误信息时可以先搜索。

更新于 2026年10月12日