# n8n 表达式常见错误
表达式错误的完整目录,包含解释和修复方案。
---
## 1. 缺少花括号
**问题**:表达式未被识别,显示为字面文本
❌ **错误**:
$json.email
✅ **正确**:
{{$json.email}}
**原因**:n8n 将没有 {{ }} 的文本视为字面字符串。表达式必须包裹起来才能被求值。
**如何识别**:字段显示为确切文本(如 "$json.email")而不是实际值。
---
## 2. Webhook Body 访问
**问题**:访问 Webhook 数据时返回 undefined
❌ **错误**:
{{$json.name}}
{{$json.email}}
{{$json.message}}
✅ **正确**:
{{$json.body.name}}
{{$json.body.email}}
{{$json.body.message}}
**原因**:Webhook 节点将传入的数据封装在 `.body` 属性下。根对象 `$json` 包含 headers、params、query 和 body。
**Webhook 结构**:
javascript
{
"headers": {...},
"params": {...},
"query": {...},
"body": { // 用户数据在这里!
"name": "John",
"email": "
[email protected]"
}
}
**如何识别**:Webhook 工作流中,明明发送了数据,字段却显示为 "undefined"。
---
## 3. 字段名中的空格
**问题**:语法错误或返回 undefined
❌ **错误**:
{{$json.first name}}
{{$json.user data.email}}
✅ **正确**:
{{$json['first name']}}
{{$json['user data'].email}}
**原因**:空格会破坏点号表示法。JavaScript 将空格解释为属性名的结束。
**如何识别**:出现意外标记的错误消息,或者字段存在但返回 undefined。
---
## 4. 节点名称中的空格
**问题**:无法访问其他节点的数据
❌ **错误**:
{{$node.HTTP Request.json.data}}
{{$node.Respond to Webhook.json}}
✅ **正确**:
{{$node["HTTP Request"].json.data}}
{{$node["Respond to Webhook"].json}}
**原因**:节点名称被视为对象属性名,当它们包含空格时需要引号。
**如何识别**:出现类似 "Cannot read property 'Request' of undefined" 的错误。
---
## 5. 节点引用大小写不正确
**问题**:返回 undefined 或错误数据
❌ **错误**:
{{$node["http request"].json.data}} // 小写
{{$node["Http Request"].json.data}} // 大小写错误
✅ **正确**:
{{$node["HTTP Request"].json.data}} // 精确匹配
**原因**:节点名称是**区分大小写**的。必须与工作流中显示的名称完全一致。
**如何识别**:尽管节点存在且有数据,但值仍为 undefined。