未定義的表達式

為什麼我的表達式返回未定義,即使該欄位存在

描述問題/錯誤/問題

錯誤訊息是什麼(如果有的話)?

請分享您的工作流程

(在畫布上選擇節點,使用鍵盤快捷鍵 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,但工作流程執行良好(或在執行輸出中顯示一個值),這通常意味著編輯器使用的是舊執行的資料。手動重新執行上游節點,讓編輯器有新資料可用來評估。