為什麼我的表達式返回未定義,即使該欄位存在
描述問題/錯誤/問題
錯誤訊息是什麼(如果有的話)?
請分享您的工作流程
(在畫布上選擇節點,使用鍵盤快捷鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 來複製和貼上工作流程。)
分享最後一個節點返回的輸出
您的 n8n 設定資訊
- n8n 版本:
- 資料庫(預設:SQLite):
- n8n EXECUTIONS_PROCESS 設定(預設:own、main):
- 執行 n8n 的方式(Docker、npm、n8n cloud、桌面應用程式):
- 作業系統:
@Oscar_Abaleke 十次裡面有九次這種情況是表達式路徑與實際的 JSON 結構不相符,點號標記法像是 {{ $json.field }} 只能到達真正的巢狀子項目,所以如果你的鍵名本身包含空格或點號,它會回傳 undefined,你需要使用括號標記法搭配確切的鍵名,{{ $json[‘your field’] }}。另一個常見的問題是該欄位實際上位於較早的節點而不是直接輸入,所以 $json 指向錯誤的步驟。你能貼上你使用的確切表達式和該節點輸入面板的截圖嗎,這樣我就能看到真實的鍵名?
Hi @Oscar_Abaleke
主要原因是該欄位可能已被上游的 Set、Edit Fields 或 Code 節點移除或修改。
檢查前一個節點的資料輸出,確認是否啟用了「Keep Only Set Fields」,並始終確保參考的是確切的 JSON 路徑
如果表達式有效,節點名稱為 everything,使用
first().json 而不是 item.json
還有一件事要檢查:如果欄位存在於不是直接連接到鏈中目前節點的節點中,預設的 $json.fieldName 或 $item().json.fieldName 無法到達它。你需要使用 $('Node Name').item.json.fieldName 才能按名稱從特定的上游節點提取資料。
另外 - 如果編輯器中的表達式預覽顯示 undefined,但工作流程執行良好(或在執行輸出中顯示一個值),這通常意味著編輯器使用的是舊執行的資料。手動重新執行上游節點,讓編輯器有新資料可用來評估。