n8n 常見錯誤排疑

快速解決工作流程開發中的常見問題

遇到 JSON 格式問題如何處理

JSON 格式問題大多是因為帶有不正確的換行等符號,以下是三種常用的解決方案:

功能 .trim() JSON.stringify() .replace(/(\r\n|\n|\r)/gm, " ")
適用節點 Set 節點 或任何表達式欄位 Code 節點 或 HTTP Request 節點的 Body Set 節點 或任何表達式欄位
核心原理 修剪:只移除字串頭部和尾部的空白字元 序列化:將 JavaScript 物件或值轉換成符合 JSON 格式的字串,會轉義特殊字元 取代:用正規表示式尋找並取代字串中間所有形式的換行符
主要用途 清理使用者輸入等欄位前後多餘的空格 準備要發送給 API 的 JSON 資料 將多行文字轉換為乾淨的單行文字
處理結果 " abc\n " 變成 "abc" {a:"b\nc"} 變成 '{"a":"b\\nc"}' "a\r\n b \n c" 變成 "a b c"

方法一:使用 .trim() 清理頭尾

適用節點:

最常用於 Set 節點,或任何可以寫表達式的地方。

怎麼寫 (n8n 表達式):

{{ $json.你的欄位名.trim() }}

原理與解釋:

這是最基礎的字串清理工具。它的功能非常專一:像剪刀一樣,只修剪掉字串「最前面」和「最後面」的所有空白字元(包含空格、換行 \n、Tab \t 等)。它完全不會動到字串中間的任何內容。

使用時機:

當你的資料來源可能在內容前後不小心包含了多餘的空格或換行時,例如使用者在表單中的輸入。

方法二:使用 JSON.stringify() 格式化資料

適用節點:

主要用於 Code 節點(進行複雜的資料處理),或是在 HTTP Request 節點中,當你需要手動將一個物件放入 Body 時。

怎麼寫 (n8n 表達式):

// 假設 $json.myObject 是一個物件 { "key": "value\n123" }
{{ JSON.stringify($json.myObject) }}

原理與解釋:

這個函式的核心目的不是清理,而是「序列化」(Serialization)。它的工作是將一個 JavaScript 的物件或陣列,轉換成一串嚴格符合 JSON 格式標準的文字,以便在網路上傳輸或儲存。當它遇到字串中的換行符 \n 時,為了維持 JSON 格式的合法性,它會將其轉義 (Escape) 成 \\n。

使用時機:

當你需要將資料以 JSON 格式發送給外部 API,或需要確保資料格式符合 JSON 標準時。

方法三:使用 .replace() 移除所有換行符

適用節點:

Set 節點 或任何可以寫表達式的地方。

怎麼寫 (n8n 表達式):

{{ $json.你的欄位名.replace(/(\r\n|\n|\r)/gm, " ") }}

原理與解釋:

這是最強力的清理方法。使用正規表示式 (Regular Expression) 來搜尋字串中的所有換行符號(包含 Windows 的 \r\n、Unix/Linux 的 \n、舊版 Mac 的 \r),並將它們全部替換成空格。這會徹底將多行文字轉換成單行文字。

使用時機:

當你需要將多行文字(例如從資料庫或 CSV 檔案中提取的備註欄)清理成乾淨的單行文字時,這就是你需要的標準解決方案。

💡 實用小技巧

  • ✅ 多個方法可以組合使用:{{ $json.field.trim().replace(/(\r\n|\n|\r)/gm, " ") }}
  • ✅ 在 Code 節點中,可以批次處理多個欄位
  • ✅ 使用 IF 節點先檢查資料是否需要清理,可以提高工作流程效率
  • ✅ 記得在 HTTP Request 節點中設定正確的 Content-Type: application/json

其他常見問題

🔌 節點連接錯誤

檢查節點之間的資料流向,確保輸出格式符合下一個節點的預期輸入。

⚠️ API 認證失敗

確認 API 金鑰正確、權限足夠,並檢查是否有 IP 白名單限制。

🔄 循環執行問題

使用 Split In Batches 節點處理大量資料,避免記憶體溢出。

📊 資料格式轉換

善用 Function 節點或 Code 節點進行複雜的資料轉換操作。

⏱️ 超時錯誤

調整 HTTP Request 節點的 timeout 設定,或考慮分批處理資料。

🐛 除錯技巧

使用節點的 "Execute Previous" 功能逐步測試,查看每個階段的資料輸出。

需要更多協助?

如果您遇到其他問題,歡迎參考官方文件或聯繫我們的技術支援團隊

📚 官方文件 🏠 返回 n8n 首頁