用途:帮助在 n8n 工作流中正确编写表达式,校验语法并修复常见错误。
主要能力:
- 表达式格式:所有动态内容用双花括号 {{expression}},如 {{$json.email}}、{{$node["HTTP Request"].json.data}}。
- 核心变量:$json 取当前节点输出;$node["节点名"] 引用其他节点(名称需加引号且区分大小写);$now 取当前时间并支持 Luxon 格式化与加减;$env 读环境变量,但部分实例启用 N8N_BLOCK_ENV_ACCESS_IN_NODE 会完全阻止访问,此时改用凭据、Set 节点或 webhook 查询参数。
- Webhook 数据:用户数据在 .body 下,应写 {{$json.body.name}},而非 {{$json.name}}。
- 转换顺序:优先用表达式,其次在表达式中用 $jmespath() 查询嵌套 JSON,再考虑 Edit Fields 中的箭头函数 IIFE,最后才用 Code 节点。
- $jmespath():对象在前、查询字符串在后;字符串用单引号、数字布尔用反引号、逻辑用 && || ! ==;返回的是值而非 items。
- Set 节点反模式:仅服务单个下游消费者的 Set 节点应内联到消费者;分支汇聚处用 NoOp 锚定,下游用 $('节点名').item.json.x 引用。
使用方式:在字段中直接写 {{ }};含空格或特殊字符的键用方括号,如 {{$json['field name']}};节点名必须与工作流完全一致。Code 节点内不用表达式,直接写 $json.email。Webhook 路径与凭据字段不支持表达式。
限制与注意:运行时错误通常不使节点失败,而是把字段解析为 null,需用真实数据在表达式编辑器预览并检查输出;可用 try/catch 包装临时暴露错误信息。表达式复杂度几乎不影响性能,成本主要来自求值次数。
适用场景:编写或排查 n8n 表达式、处理 webhook 数据、跨节点取值、日期与字符串处理、嵌套 JSON 查询。