用途
n8n-code-javascript 是一份针对 n8n Code 节点的 JavaScript 编写指南,用于指导用户在 n8n 工作流的 Code 节点中编写 JavaScript 代码。它适合需要复杂数据转换、自定义计算、业务逻辑、递归操作、复杂 API 响应解析、多步条件判断以及跨条目数据聚合的场景。
主要能力
执行模式选择
Code 节点提供两种执行模式:
- Run Once for All Items(推荐,默认):代码无论输入条目数量多少都只执行一次,通过
$input.all()或items数组访问数据。适合聚合、过滤、批处理、转换、需要全部数据的 API 调用,多条目时性能更快。 - Run Once for Each Item:代码对每个输入条目分别执行,通过
$input.item或$item访问数据。适合条目级独立逻辑、独立操作、逐条校验,大数据集时性能较慢。
选择捷径:需要查看多个条目时用 All Items 模式;每个条目完全独立时用 Each Item 模式;不确定时用 All Items 模式(可在内部自行循环)。
数据访问模式
$input.all():最常用,处理数组、批量操作、聚合。$input.first():处理单个对象、API 响应、先进先出。$input.item:仅在 Each Item 模式下使用。$node["节点名"].json:引用工作流中特定节点的输出。
Webhook 数据结构
最常见的错误是直接访问 Webhook 数据。Webhook 节点会把所有请求数据包裹在 body 属性下,因此应使用 $json.body.name 而非 $json.name,或用 $input.first().json.body 访问。
返回格式要求
必须始终返回带 json 属性的对象数组,例如 return [{json: {...}}]。单个结果、多个结果、转换后的数组、空结果 return [] 均遵循此格式。错误格式包括:不带数组包裹的对象、不带 json 包裹的数组、纯字符串、未映射的原始数据、结构不完整(如 {data: value})。格式错误会导致工作流执行失败。
内置函数与辅助工具
$helpers.httpRequest():在代码中发起 HTTP 请求,支持 method、url、headers 等配置。DateTime(Luxon):日期时间操作,如DateTime.now()、toFormat()、toISO()、plus()、minus()。$jmespath():查询 JSON 结构,如过滤数组users[?age >= \18`]、提取字段users[*].name`。
常见模式
包括多源数据聚合、正则过滤、数据转换与增强、Top N 过滤与排序、聚合与报告等。
使用方式
在 n8n 工作流中添加 Code 节点,选择执行模式与语言(JavaScript 或 Python),在代码编辑区编写逻辑。注意:Code 节点直接使用 JavaScript,不使用 n8n 的 {{ }} 表达式语法,应使用 JavaScript 模板字符串 ${value}。
适用场景
适合需要复杂逻辑、需串联多个简单节点的场景。简单字段映射建议用 Set 节点,基础过滤用 Filter 节点,简单条件用 IF 或 Switch 节点,仅需 HTTP 请求用 HTTP Request 节点。
限制与注意事项
常见错误包括:代码为空或缺少 return、在代码中使用 n8n 表达式语法、返回包装错误、缺少空值检查、Webhook body 嵌套访问错误。最佳实践包括:始终校验输入数据、使用 try-catch 处理错误、优先使用数组方法而非循环、先过滤后处理、使用描述性变量名、用 console.log() 调试。部署前应核对清单:代码非空、存在 return 语句、返回格式正确、数据访问正确、无 n8n 表达式、有错误处理、Webhook 数据经 .body 访问、模式选择正确、性能优化、所有代码路径返回一致结构。
相关文档链接:Code Node Guide https://docs.n8n.io/code/code-node/ ;Built-in Methods https://docs.n8n.io/code-examples/methods-variables-reference/ ;Luxon Documentation https://moment.github.io/luxon/ 。