mcpField
N
n8n

n8n

github.com/vladm3105开发17446 次安装1 天前更新
代码仓库

关于 n8n

这项技能为 n8n 平台的工作流、集成和自定义节点开发提供指导,面向需要将服务、API 与数据处理步骤组合起来的开发者。内容涵盖工作流规划、代码节点、TypeScript 自定义节点、错误处理和 AI Agent 模式。

主要功能

  1. 01规划触发器、节点与数据流
  2. 02编写 JavaScript 和 Python 代码节点
  3. 03开发 TypeScript 自定义节点
  4. 04连接 API、数据库与云服务
  5. 05设计错误处理和 AI Agent 工作流

适用场景

  1. 01将多个服务组合成自动化工作流
  2. 02为工作流编写数据转换逻辑
  3. 03构建可复用的自定义集成节点
  4. 04排查执行错误并规划部署

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vladm3105/aidoc-flow-framework --skill n8n

安装后在 Claude Code 中输入/n8n确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

n8n
examples/
README.md
n8n_custom_node.ts
n8n_deployment.yaml
n8n_workflow_examples.js

详细介绍

n8n 工作流自动化技能

目的

为在 n8n 自动化平台上开发工作流、自定义节点和集成提供专业指导。帮助 AI 助手设计工作流、编写自定义代码节点、构建基于 TypeScript 的自定义节点、集成外部服务并实现 AI Agent 模式。

何时使用此技能

在以下情况下调用此技能:

  • 设计组合多个服务的自动化工作流
  • 在工作流节点中编写 JavaScript/Python 代码
  • 使用 TypeScript 构建自定义节点
  • 集成 API、数据库和云服务
  • 使用 LangChain 创建 AI Agent 工作流
  • 排查工作流执行错误
  • 规划可自托管的 n8n 部署
  • 将手动流程转换为自动化工作流

请勿在以下情况下使用此技能:

  • 一般自动化建议(使用适当的语言/平台技能)
  • 特定云平台的集成(结合云服务提供商技能)
  • 数据库设计(使用数据库专家技能)
  • 前端开发(n8n 的 UI 自定义功能有限)

n8n 核心概念

平台架构

运行时环境:

  • 基于 Node.js 的执行引擎
  • TypeScript(90.7%)和 Vue.js 前端
  • pnpm 单体仓库结构
  • 可自托管或部署到云端

工作流执行模式:

  1. 手动触发器 - 由用户发起执行
  2. Webhook 触发器 - 激活 HTTP 端点
  3. 计划触发器 - 基于 Cron 的定时执行
  4. 事件触发器 - 外部服务事件(数据库变更、文件上传)
  5. 错误触发器 - 处理工作流失败

Fair-code 许可证:

  • Apache 2.0 和 Commons Clause
  • 可免费自托管并不限量执行
  • 对 SaaS 服务有商业限制
节点类型和类别

核心节点(数据处理):

  • Code - 执行 JavaScript/Python
  • Set - 设置变量值
  • If - 条件分支
  • Switch - 多分支路由
  • Merge - 合并数据流
  • Split In Batches - 分批处理大型数据集
  • Loop Over Items - 遍历数据

触发器节点(工作流启动):

  • Webhook - HTTP 端点
  • Schedule - 按时间执行
  • Manual Trigger - 用户触发
  • Error Trigger - 捕获工作流失败
  • Start - 默认入口点

操作节点(500 多种集成):

  • API 连接器(REST、GraphQL、SOAP)
  • 数据库客户端(PostgreSQL、MongoDB、MySQL、Redis)
  • 云服务(AWS、GCP、Azure、Cloudflare)
  • 通信(Email、Slack、Discord、SMS)
  • 文件操作(FTP、S3、Google Drive、Dropbox)
  • 身份验证(OAuth2、API keys、JWT)

AI 节点(LangChain 集成):

  • AI Agent - 自主决策
  • AI Chain - 顺序执行大模型操作
  • AI Transform - 使用大模型处理数据
  • Vector Store - 嵌入向量的存储和检索
  • Document Loaders - 从文件中提取文本
数据流和连接

连接类型:

  1. 主连接 - 主要数据流(实线)
  2. 错误连接 - 失败路由(红色虚线)

数据结构:

// Input/output format for all nodes
[
  {
    json: { /* Your data object */ },
    binary: { /* Optional binary data (files, images) */ },
    pairedItem: { /* Reference to source item */ }
  }
]

数据访问模式:

  • 表达式 - {{ $json.field }}(当前节点的输出)
  • 输入引用 - {{ $('NodeName').item.json.field }}(指定节点)
  • 所有项目 - {{ $input.all() }}(整个数据集)
  • 第一个项目 - {{ $input.first() }}(单个项目)
  • 项目索引 - {{ $itemIndex }}(当前迭代)
凭据和身份验证

凭据类型:

  • 预定义 - 为热门服务预配置(OAuth2、API key)
  • 通用 - HTTP 身份验证(Basic、Digest、Header Auth)
  • 自定义 - 用户定义的凭据结构

安全实践:

  • 凭据以加密形式存储在数据库中
  • 支持使用环境变量存储敏感值
  • 可选择在工作流间共享凭据
  • 轮换:需要手动更新

工作流设计方法

规划阶段

步骤 1:定义需求

  • 输入来源(Webhook、计划任务、数据库)
  • 所需的数据转换
  • 输出目标(API、文件、数据库)
  • 错误处理要求
  • 执行频率和数据量

步骤 2:梳理数据流

  • 确定触发事件
  • 列出转换步骤
  • 指定验证规则
  • 定义分支逻辑
  • 规划错误恢复

步骤 3:选择节点

决策标准:

  • 有原生节点时优先使用原生节点(经过优化且有人维护)
  • 自定义逻辑少于 50 行时使用 Code 节点
  • 可复用的复杂逻辑超过 100 行时构建自定义节点
  • API 没有原生节点时使用 HTTP Request 节点
  • 系统操作使用 Execute Command 节点(存在安全风险)
实施阶段

工作流结构模式:

[Trigger] → [Validation] → [Branch (If/Switch)] → [Processing] → [Error Handler]
                                ↓                      ↓
                          [Path A nodes]        [Path B nodes]
                                ↓                      ↓
                          [Merge/Output]         [Output]

模块化设计:

  • 将可复用逻辑提取到子工作流中
  • 使用 Execute Workflow 节点实现模块化
  • 将主工作流限制在 15-20 个节点(便于阅读)
  • 使用输入变量参数化工作流

错误处理策略:

  1. Error Trigger 工作流 — 捕获所有失败
  2. Try/Catch 模式 — 在节点上连接错误输出
  3. 重试逻辑 — 配置各节点的重试设置
  4. 验证节点 — 使用 If/Switch 检查数据
  5. 通知 — 发生严重故障时发送提醒(Email、Slack)
测试阶段

本地测试:

  • 使用示例数据执行
  • 验证每个节点的输出(检查数据面板)
  • 使用无效数据测试错误路径
  • 检查凭据连接

生产环境验证:

  • 启用工作流并监控执行情况
  • 查看执行历史中的失败记录
  • 检查资源使用情况(执行时间、内存)
  • 验证输出数据质量

工作流中的代码执行

Code 节点(JavaScript)

可用 API:

  • Node.js 内置模块 — fs、path、crypto、https
  • Lodash — _.groupBy()、_.sortBy() 等
  • Luxon — 日期时间处理
  • n8n 辅助对象 — $input、$json、$binary

基本结构:

// Access input items
const items = $input.all();

// Process data
const processedItems = items.map(item => {
  const inputData = item.json;

  return {
    json: {
      // Output fields
      processed: inputData.field.toUpperCase(),
      timestamp: new Date().toISOString()
    }
  };
});

// Return transformed items
return processedItems;

数据转换模式:

筛选:

const items = $input.all();
return items.filter(item => item.json.status === 'active');

聚合:

const items = $input.all();
const grouped = _.groupBy(items, item => item.json.category);

return [{
  json: {
    summary: Object.keys(grouped).map(category => ({
      category,
      count: grouped[category].length
    }))
  }
}];

API 调用(异步):

const items = $input.all();
const results = [];

for (const item of items) {
  const response = await fetch(`https://api.example.com/data/${item.json.id}`);
  const data = await response.json();

  results.push({
    json: {
      original: item.json,
      enriched: data
    }
  });
}

return results;

代码中的错误处理:

const items = $input.all();

return items.map(item => {
  try {
    // Risky operation
    const result = JSON.parse(item.json.data);
    return { json: { parsed: result } };
  } catch (error) {
    return {
      json: {
        error: error.message,
        original: item.json.data
      }
    };
  }
});
Code 节点(Python)

可用库:

  • 标准库 — json、datetime、re、requests
  • NumPy — 数组操作
  • Pandas — 数据分析(如果已安装)

基本结构:

# Access input items
items = _input.all()

# Process data
processed_items = []
for item in items:
    input_data = item['json']

    processed_items.append({
        'json': {
            'processed': input_data['field'].upper(),
            'timestamp': datetime.now().isoformat()
        }
    })

# Return transformed items
return processed_items

复杂度评级:Code 节点

  • 简单转换(map/filter):1
  • 带错误处理的 API 调用:2
  • 多步骤异步操作:3
  • 使用库的复杂算法:4
  • 性能关键型处理:5(考虑使用自定义节点)

自定义节点开发

何时构建自定义节点

在以下情况下构建自定义节点:

  • 在多个工作流中复用逻辑(超过 3 个工作流)
  • 有复杂的身份验证要求
  • 执行性能关键型操作(Code 节点有开销)
  • 向社区贡献(公开的 npm 包)
  • 集成组织专用服务

在以下情况下使用 Code 节点:

  • 一次性转换
  • 快速原型设计
  • 简单的 API 调用(少于 100 行)
开发风格

[查看代码示例:examples/n8n_custom_node.ts]

1. 编程式风格(完全可控)

适用于:

  • 复杂的身份验证流程
  • 高级参数验证
  • 自定义 UI 组件
  • 带状态管理的轮询操作

[参见:examples/n8n_custom_node.ts 中的 CustomNode 类]

2. 声明式风格(简化)

适用于:

  • 标准 CRUD 操作
  • RESTful API 封装
  • 无复杂逻辑的简单集成

[参见:examples/n8n_custom_node.ts 中导出的 operations 和 router]

其他示例:

  • 凭据配置:examples/n8n_custom_node.ts 中的 customApiCredentials
  • 凭据验证:examples/n8n_custom_node.ts 中的 validateCredentials()
  • 轮询触发器:examples/n8n_custom_node.ts 中的 PollingTrigger 类
开发工作流

步骤 1:初始化 Node

# Create from template
npm create @n8n/node my-custom-node

# Directory structure created:
# ├── nodes/
# │   └── MyCustomNode/
# │       └── MyCustomNode.node.ts
# ├── credentials/
# │   └── MyCustomNodeApi.credentials.ts
# └── package.json

步骤 2:实现逻辑

  • 定义节点属性(参数、凭据)
  • 实现 execute 方法
  • 添加错误处理
  • 编写单元测试(可选)

步骤 3:构建并测试

# Build TypeScript
npm run build

# Link locally for testing
npm link

# In n8n development environment
cd ~/.n8n/nodes
npm link my-custom-node

# Restart n8n to load node
n8n start

步骤 4:发布

# Community node (npm package)
npm publish

# Install in n8n
Settings → Community Nodes → Install → Enter package name

复杂度评级:自定义节点

  • 声明式 CRUD 封装:2
  • 带身份验证的程序化实现:3
  • 复杂状态管理:4
  • 高级轮询/Webhook:5

集成模式

API 集成策略

决策树:

Has native node? ──Yes──> Use native node
     │
     No
     ├──> Simple REST API? ──Yes──> HTTP Request node
     ├──> Complex auth (OAuth2)? ──Yes──> Build custom node
     ├──> Reusable across workflows? ──Yes──> Build custom node
     └──> One-off integration? ──Yes──> Code node with fetch()
HTTP 请求节点模式

带查询参数的 GET:

URL: https://api.example.com/users
Method: GET
Query Parameters:
  - status: active
  - limit: 100
Authentication: Header Auth
  - Name: Authorization
  - Value: Bearer {{$credentials.apiKey}}

带 JSON 请求体的 POST:

URL: https://api.example.com/users
Method: POST
Body Content Type: JSON
Body:
{
  "name": "={{ $json.name }}",
  "email": "={{ $json.email }}"
}

分页处理(代码节点):

let allResults = [];
let page = 1;
let hasMore = true;

while (hasMore) {
  const response = await this.helpers.request({
    method: 'GET',
    url: `https://api.example.com/data?page=${page}`,
    json: true,
  });

  allResults = allResults.concat(response.results);
  hasMore = response.hasNext;
  page++;
}

return allResults.map(item => ({ json: item }));
Webhook 模式

接收 Webhook:

  1. 创建 Webhook 触发器节点
  2. 配置 HTTP 方法(POST/GET)
  3. 设置身份验证(无/Header Auth/Basic Auth)
  4. 从节点获取 Webhook URL
  5. 在外部服务中注册 URL

响应 Webhook:

// In Code node after webhook trigger
const webhookData = $input.first().json;

// Process data
const result = processData(webhookData);

// Return response (synchronous webhook)
return [{
  json: {
    status: 'success',
    data: result
  }
}];

Webhook URL 结构:

Production: https://your-domain.com/webhook/workflow-id
Test: https://your-domain.com/webhook-test/workflow-id
数据库集成

常见模式:

带参数的查询:

-- PostgreSQL node
SELECT * FROM users
WHERE created_at > $1
  AND status = $2
ORDER BY created_at DESC

-- Parameters from previous node
Parameters: ['{{ $json.startDate }}', 'active']

批量插入:

// Code node preparing data for database
const items = $input.all();
const values = items.map(item => ({
  name: item.json.name,
  email: item.json.email,
  created_at: new Date().toISOString()
}));

return [{ json: { values } }];

// Next node: PostgreSQL
// INSERT INTO users (name, email, created_at)
// VALUES {{ $json.values }}
文件操作

上传到 S3:

Workflow: File Trigger → S3 Upload
- File Trigger: Monitor directory for new files
- S3 node:
  - Operation: Upload
  - Bucket: my-bucket
  - File Name: {{ $json.fileName }}
  - Binary Data: true (from file trigger)

下载并处理:

HTTP Request (download) → Code (process) → Google Drive (upload)
- HTTP Request: Binary response enabled
- Code: Process $binary.data
- Google Drive: Upload with binary data

AI Agent 工作流

LangChain 集成

AI Agent 节点配置:

  • Agent 类型:OpenAI Functions、ReAct、Conversational
  • 大模型:OpenAI、Anthropic、Hugging Face、Ollama(本地)
  • 记忆:Buffer、Buffer Window、Summary
  • 工具:Calculator、Webhook、数据库查询、自定义 API 调用

基本 Agent 模式:

Manual Trigger → AI Agent → Output
- AI Agent:
  - Prompt: "You are a helpful assistant that {{$json.task}}"
  - Tools: [Calculator, HTTP Request]
  - Memory: Conversation Buffer Window
守门员模式(受监督的 AI)

**使用场景:**在 Agent 执行操作前进行人工审批

Webhook → AI Agent → If (requires approval) → Send Email → Wait for Webhook → Execute Action
                            ↓ (auto-approve)
                        Execute Action

实现方式:

  1. AI Agent 生成操作计划
  2. If 节点检查置信度分数
  3. 置信度低 → 发送审批请求邮件
  4. 等待 Webhook(批准/拒绝)
  5. 根据响应执行或中止
迭代 Agent 模式

**使用场景:**带状态的多步骤问题解决

Loop Start → AI Agent → Tool Execution → State Update → Loop End (condition check)
     ↑______________________________________________________________|

状态管理:

// Code node - Initialize state
return [{
  json: {
    task: 'Research topic',
    iteration: 0,
    maxIterations: 5,
    context: [],
    completed: false
  }
}];

// Code node - Update state
const state = $json;
state.iteration++;
state.context.push($('AI Agent').item.json.response);
state.completed = state.iteration >= state.maxIterations || checkGoalMet(state);

return [{ json: state }];
RAG(检索增强生成)模式
Query Input → Vector Store Search → Format Context → LLM → Response Output

向量存储设置:

  1. 文档加载器节点 → 将文本拆分为多个片段
  2. 嵌入节点 → 生成向量(OpenAI、Cohere)
  3. 向量存储节点 → 存储到 Pinecone/Qdrant/Supabase
  4. 查询:检索相关片段 → 注入大模型提示词

复杂度评级:AI 工作流

  • 简单的大模型调用:1
  • 带工具的 Agent:3
  • 守门员模式:4
  • 多 Agent 编排:5

部署与托管

自托管选项

[查看代码示例:examples/n8n_deployment.yaml]

Docker(推荐):

  • 使用 PostgreSQL 的 Docker Compose
  • 用于扩展的队列模式配置
  • 按使用规模划分的资源需求

[查看:examples/n8n_deployment.yaml 中的 docker-compose 配置]

npm(开发):

npm install n8n -g
n8n start
# Access: http://localhost:5678

环境配置:

[查看:examples/n8n_deployment.yaml 中的完整环境变量参考]

必需变量:

  • N8N_HOST - Webhook 的公开 URL
  • WEBHOOK_URL - Webhook 端点基础 URL
  • N8N_ENCRYPTION_KEY - 凭据加密(必须持久保存)
  • DB_TYPE - 数据库(SQLite/PostgreSQL/MySQL/MariaDB)
  • EXECUTIONS_DATA_SAVE_ON_ERROR - 错误日志记录
  • EXECUTIONS_DATA_SAVE_ON_SUCCESS - 成功日志记录

examples/n8n_deployment.yaml 中记录了性能调优变量

扩展性考量

队列模式(高吞吐量):

# Separate main and worker processes
# Main process (UI + queue management)
N8N_QUEUE_MODE=main n8n start

# Worker processes (execution only)
N8N_QUEUE_MODE=worker n8n worker

数据库:

  • SQLite:开发/低吞吐量(每天 <1000 次执行)
  • PostgreSQL:生产环境(推荐)
  • MySQL/MariaDB:适用于现有基础设施的替代方案

资源要求:

工作流量CPURAM数据库
<100 次执行/天1 核512MBSQLite
100-1000 次/天2 核2GBPostgreSQL
1000-10000 次/天4 核4GBPostgreSQL
>10000 次/天8+ 核8GB+PostgreSQL + 队列模式

监控:

  • 启用执行日志(EXECUTIONS_DATA_SAVE_*)
  • 设置错误工作流(Error Trigger 节点)
  • 监控数据库大小(清理执行历史记录)
  • 跟踪 Webhook 响应时间

最佳实践

工作流设计

1. 模块化:

  • 将可复用逻辑提取到 Execute Workflow 节点
  • 将工作流限定为单一职责
  • 对常见操作(验证、格式化)使用子工作流

2. 错误韧性:

  • 为关键节点添加错误输出
  • 实现重试逻辑(节点设置)
  • 创建 Error Trigger 工作流用于告警
  • 将错误记录到外部系统(Sentry、CloudWatch)

3. 性能:

  • 对大型数据集(>1000 项)使用 Split In Batches
  • 尽量减少循环中的 HTTP 请求(批量调用 API)
  • 对高频工作流禁用执行日志记录
  • 将开销较大的操作缓存到变量中

4. 安全性:

  • 将密钥存储在凭据中(不要硬编码)
  • 使用环境变量进行配置
  • 启用 Webhook 身份验证
  • 限制 Execute Command 节点的使用(或全局禁用)
  • 检查代码节点是否存在注入漏洞

5. 可维护性:

  • 为复杂工作流添加备注(Sticky Note 节点)
  • 使用一致的命名方式(动词 + 名词:“Fetch Users”“Transform Data”)
  • 在工作流设置中说明工作流用途
  • 对工作流进行版本控制(导出 JSON,提交到 Git)
节点中的代码质量

1. 数据验证:

// Always validate input structure
const items = $input.all();

for (const item of items) {
  if (!item.json.email || !item.json.name) {
    throw new Error(`Invalid input: missing required fields at item ${item.json.id}`);
  }
}

2. 错误上下文:

// Provide debugging information
try {
  const result = await apiCall(item.json.id);
} catch (error) {
  throw new Error(`API call failed for ID ${item.json.id}: ${error.message}`);
}

3. 幂等性:

// Check existence before creation
const exists = await checkExists(item.json.uniqueId);
if (!exists) {
  await createRecord(item.json);
}

工作流模式库

模式 1:API 同步

适用场景: 在两个系统之间同步数据

Schedule Trigger (hourly) → Fetch Source Data → Transform → If (record exists) → Update Target
                                                                    ↓ (new)
                                                                Create in Target

复杂度: 2

模式 2:错误恢复

适用场景: 使用指数退避重试失败的操作

Main Workflow → Process → Error → Error Trigger Workflow
                                        ↓
                                   Wait (delay) → Retry → If (max retries) → Alert

复杂度: 3

模式 3:数据丰富

适用场景: 使用外部来源扩充数据

Webhook → Split In Batches → For Each Item:
                                  ↓
                             API Call (enrich) → Code (merge) → Batch Results
                                                                      ↓
                                                                Database Insert

复杂度: 3

模式 4:事件驱动处理

适用场景: 处理来自消息队列的事件

SQS Trigger → Parse Message → Switch (event type) → [Handler A, Handler B, Handler C] → Confirm/Delete Message

复杂度: 3

模式 5:人工参与

适用场景: 审批工作流

Trigger → Generate Request → Send Email (approval link) → Webhook (approval response) → If (approved) → Execute Action
                                                                                              ↓ (rejected)
                                                                                         Send Rejection Notice

复杂度: 4

模式 6:多阶段 ETL

适用场景: 复杂数据管道

Schedule → Extract (API) → Validate → Transform → Load (Database) → Success Notification
                               ↓                                            ↓
                          Error Handler ────────────────────> Error Notification

复杂度: 3

质量关卡

完成定义:工作流

满足以下条件时,工作流即可用于生产环境:

  1. 功能性:

    • ✓ 所有节点都能在测试数据上无错误地执行
    • ✓ 使用无效输入测试错误路径
    • ✓ 根据要求验证输出格式
  2. 错误处理:

    • ✓ 为关键节点配置错误输出
    • ✓ 创建 Error Trigger 工作流用于告警
    • ✓ 在适用的情况下配置重试逻辑
  3. 安全性:

    • ✓ 使用凭据(不硬编码密钥)
    • ✓ 启用 Webhook 身份验证
    • ✓ 实现输入验证
  4. 文档:

    • ✓ 在设置中填写工作流说明
    • ✓ 使用备注记录复杂逻辑
    • ✓ 参数说明清晰
  5. 性能:

    • ✓ 使用符合实际情况的数据量进行测试
    • ✓ 执行时间可接受
    • ✓ 资源使用量在限制范围内
自定义节点的完成标准

自定义节点满足以下条件即可投入生产:

  1. 功能:

    • ✓ 所有操作均已实现并测试
    • ✓ 凭据集成正常工作
    • ✓ 参数已验证
  2. 代码质量:

    • ✓ 已定义 TypeScript 类型
    • ✓ 错误处理完善
    • ✓ 没有硬编码值(使用参数)
  3. 文档:

    • ✓ README 包含安装说明
    • ✓ 参数说明清晰
    • ✓ 提供示例工作流
  4. 分发:

    • ✓ 已发布到 npm(如为公开版本)
    • ✓ 版本号设置恰当
    • ✓ 已在 package.json 中声明依赖项

错误处理指南

常见问题及解决方法

问题:工作流因“Invalid JSON”而失败

  • 原因: 节点输出格式不正确
  • 解决方法:
    // Ensure return format
    return [{ json: { your: 'data' } }];
    // NOT: return { your: 'data' };
    

问题:“Cannot read property of undefined”

  • 原因: 缺少上一个节点的数据
  • 解决方法:
    // Check existence before access
    const value = $json.field?.subfield ?? 'default';
    

问题:Webhook 未收到数据

  • 原因: Webhook URL 或身份验证不正确
  • 解决方法:
    • 确认 URL 与外部服务配置一致
    • 检查身份验证方式是否一致(None/Header/Basic)
    • 使用 curl 测试:
      curl -X POST https://your-n8n.com/webhook/test \
        -H "Content-Type: application/json" \
        -d '{"test": "data"}'
      

问题:自定义节点未显示

  • 原因: 未正确链接/安装
  • 解决方法:
    # Check installation
    npm list -g | grep n8n-nodes-
    
    # Reinstall if needed
    npm install -g n8n-nodes-your-node
    
    # Restart n8n
    

问题:内存占用过高

  • 原因: 未分批处理大型数据集
  • 解决方法:
    • 使用 Split In Batches 节点(批次大小:100-1000)
    • 对高频工作流,禁用执行数据保存
    • 设置 EXECUTIONS_DATA_PRUNE=true

问题:凭据无法使用

  • 原因: 凭据配置不正确或令牌已过期
  • 解决方法:
    • 重新验证 OAuth2 凭据
    • 验证 API 密钥/令牌是否有效
    • 检查服务中的凭据权限
调试策略

1. 检查节点输出:

  • 点击节点 → 查看执行数据
  • 检查 json 和 binary 选项卡
  • 验证数据结构是否符合预期

2. 添加调试用 Code 节点:

// Log intermediate values
const data = $json;
console.log('Debug data:', JSON.stringify(data, null, 2));
return [{ json: data }];

3. 使用 If 节点进行验证:

// Expression to check data quality
{{ $json.email && $json.email.includes('@') }}

4. 启用执行日志记录:

  • 设置 → 日志 → 将级别设为 debug
  • 查看 docker 日志:docker logs n8n -f

5. 单独测试:

  • 使用 Manual Trigger 创建测试工作流
  • 复制有问题的节点
  • 使用静态测试数据

参考资料

官方文档
代码仓库
社区资源
相关技能
  • 云集成:使用 cloud-devops-expert 技能
  • 数据库设计:使用 database-specialist 技能
  • API 设计:使用 api-design-architect 技能
  • TypeScript 开发:使用特定语言的技能

版本: 1.0.0 最后更新: 2025-11-13 复杂度评级: 3(中等——需要平台专属知识) 预计学习时间: 熟练掌握需 8-12 小时

评论

支持 Markdown