嗨各位,
我最近遇到了這個問題並手動修復了它。在這裡發佈我的發現,以防這不是預期的行為——或者以防 AI 助手需要改進。
問題
我要求 n8n AI 助手重新命名我工作流中的幾個節點。它進行了編輯,一切在畫布上看起來都很好。但在那之後,工作流變得完全無法保存——我之後進行的每次編輯都失敗並出現:
Problem saving workflow
Autosave failed: Cannot convert undefined or null to object
瀏覽器控制台顯示相同的錯誤反覆從畫布渲染器和保存處理器觸發:
症狀 (AI)
- 重新命名是我唯一要求 AI 助手做的事情,但在它編輯後,工作流 JSON 回傳時有多個節點級別的欄位被明確設置為
null——比如credentials、webhookId、notes、notesInFlow、executeOnce、retryOnFail、alwaysOutputData和onError。 - 任何通常不需要這些屬性的節點在標準 n8n 導出中只是完全省略該鍵。AI 助手的編輯往返反而將它們寫成了
null。 - 一旦該結構進入畫布,之後的每個操作(移動節點、保存、自動保存)都會因為相同的
Object.keysTypeError 而崩潰,因為nodeTransforms.ts嘗試規範化這些欄位,但不期望字面值null。
根本原因 (AI)
nodeTransforms.ts(由畫布 diffing 邏輯和 useWorkflowSaving.ts 使用)在計算要保存的 diff 時在某些節點屬性(如 credentials)上呼叫 Object.keys(...)。Object.keys(null) 會拋出錯誤,所以一旦工作流中的一個節點具有 null 而不是省略的鍵,保存/自動保存整個工作流就會中斷——不只是該節點。
看起來 AI 助手的節點編輯路徑序列化節點物件時沒有丟棄解析為 null 的鍵,這會產生技術上有效的 JSON,但前端不安全的節點形狀。
解決方案 (手動)
導出工作流 JSON,移除任何節點上值為 null 的任何鍵(而不是將其設置為 null),然後重新導入。例如,在受影響的節點上,移除類似以下的鍵:
"credentials": null,
"webhookId": null,
"notes": null,
"notesInFlow": null,
"executeOnce": null,
"retryOnFail": null,
"alwaysOutputData": null,
"onError": null
這樣如果節點不使用這些鍵,節點物件就根本沒有那些鍵。移除 null 欄位並重新導入後(從檔案導入到新工作流,而不是貼上到畫布),工作流恢復正常保存和自動保存。
希望這能為某人省去幾小時的除錯時間!
這看起來像是 AI 助手序列化節點編輯方式中的一個錯誤——希望從 n8n 團隊獲得確認,因為任何使用它進行大量編輯節點的人都可能遇到同樣的問題。

