Debug Workflow n8n: วิธีหาและแก้ปัญหา
เรียนรู้เทคนิค Debug Workflow n8n อย่างมีระบบ ตั้งแต่อ่าน Execution Log, ใช้ Pin Data, Test Mode จนถึงแก้ Error ที่พบบ่อย
Workflow ที่เขียนแล้วไม่ทำงานตามที่คาดคือเรื่องปกติ ไม่ใช่เรื่องน่าอาย แต่การ Debug แบบสุ่มดูทีละ Node เสียเวลามาก บทความนี้จะสอนวิธี Debug อย่างมีระบบเพื่อหาต้นเหตุปัญหาได้เร็วขึ้น
เครื่องมือ Debug ใน n8n
n8n มีเครื่องมือช่วย Debug หลายอย่างในตัว รู้จักทุกอย่างก่อนจะทำให้เลือกใช้ได้ถูกกับปัญหา
Execution Log — บันทึกการทำงานทุกครั้ง ดูได้ว่า Node ไหนทำงาน Node ไหน Error ข้อมูลที่เข้าและออกแต่ละ Node คืออะไร
Pin Data — “แช่แข็ง” ข้อมูล Output ของ Node ไว้ ทำให้ Test Node ถัดไปโดยไม่ต้อง Trigger Node แรกซ้ำ (ไม่ต้องรับ Webhook หรือรอ Schedule จริงๆ)
Test Step — รัน Node เดียวโดยใช้ Input จาก Node ก่อนหน้าใน Execution ล่าสุด
Console.log ใน Code Node — ดู output ใน browser console สำหรับ debug logic ภายใน Code Node
ขั้นตอน Debug อย่างเป็นระบบ
ขั้นที่ 1: อ่าน Execution Log ก่อนเสมอ
ไปที่ Workflow → Executions → คลิก Execution ที่ Error คลิกที่ Node สีแดงเพื่อดู error message
อ่าน error message อย่างละเอียด หลายครั้ง error บอกตรงๆ ว่าปัญหาคืออะไร เช่น:
Request failed with status code 401→ Authentication ผิดCannot read property 'x' of undefined→ ข้อมูลไม่มี field นั้นRate limit exceeded→ เรียก API เร็วเกินไปWorkflow timeout→ ทำงานนานเกิน timeout ที่ตั้ง
ขั้นที่ 2: ดูข้อมูล Input/Output แต่ละ Node
คลิกที่ Node ใน Execution Log จะเห็น Input และ Output ตรวจสอบว่า:
- ข้อมูลที่เข้า Node มีรูปแบบที่ Node คาดหวังหรือไม่
- ข้อมูลที่ออกมีค่าที่ถูกต้องหรือไม่
- มี field ที่หายไปหรือค่าที่ผิดปกติหรือไม่
ขั้นที่ 3: Isolate ปัญหาด้วย Pin Data
ถ้า Workflow ยาวและ Trigger จากภายนอก (Webhook, Schedule) การรันซ้ำทุกครั้งเพื่อ Test เสียเวลา ใช้ Pin Data:
- คลิก Execution ล่าสุด
- คลิก Node ก่อน Node ที่สงสัย
- กดปุ่ม “Pin” เพื่อ Pin ข้อมูล Output ของ Node นั้นไว้
- ตอนนี้สามารถรัน Workflow ส่วนที่เหลือได้โดยไม่ต้อง Trigger ใหม่
ขั้นที่ 4: Test Step เพื่อดู Output ของ Node เดียว
คลิก Node ที่ต้องการ → กดปุ่ม “Test Step” — Node จะรันด้วย Input จาก Execution ล่าสุดและแสดง Output ทันที ไม่ต้องรัน Workflow ทั้งหมด
Error ที่พบบ่อยและวิธีแก้
1. “Cannot read property of undefined”
เกิดเมื่อ Expression พยายามเข้าถึง field ที่ไม่มีอยู่ใน item
// ปัญหา: item.json.user ไม่มีอยู่
{{ $json.user.name }} // Error!
// แก้: ตรวจสอบก่อน
{{ $json.user?.name ?? 'Unknown' }}
// หรือใน Code Node
const name = item.json?.user?.name || 'Unknown';
วิธีหา: ดูข้อมูล Input ของ Node ว่า field นั้นมีอยู่จริงหรือไม่ บางครั้ง API เปลี่ยน structure โดยไม่แจ้ง
2. Authentication Error (401/403)
สาเหตุที่พบบ่อย:
- Token หมดอายุ → ตรวจสอบและ refresh Token
- Credential ผิด → ตรวจสอบใน Credentials settings
- Permission ไม่พอ → ขอ scope เพิ่มที่ API ต้นทาง
- ส่ง Token ผิด format →
Bearer {token}vs{token}ตรงกันไหม
3. Rate Limit Error (429)
"Error: Request failed with status code 429"
"Too Many Requests"
แก้: เพิ่ม Wait Node หลัง HTTP Request, ลด Batch Size, หรือเพิ่ม Retry logic พร้อม exponential backoff
4. Timeout Error
Workflow ค้างนาน n8n หยุดกลางคัน แก้ได้หลายวิธี:
- เพิ่ม Timeout ใน Settings
- ลด scope ของงาน เช่น แทนที่จะ process 10,000 items ในครั้งเดียว แบ่งเป็น batch ย่อย
- ตรวจว่ามี Loop ที่ไม่มีเงื่อนไขหยุดหรือไม่
5. “All items have been removed”
IF Node หรือ Filter ทำให้ Items ทั้งหมดหลุดออก Workflow จึงหยุด
แก้: ดูเงื่อนไข IF/Filter ว่า logic ถูกต้องหรือไม่ ลองเพิ่ม Set Node ก่อน IF เพื่อดูว่าข้อมูลที่เข้า IF มีค่าอะไร
6. Expression ไม่ทำงานอย่างที่คาด
n8n Expression ใช้ {{ }} และมี context เฉพาะ บางครั้ง expression ดูถูกต้องแต่ได้ค่า undefined
วิธี debug expression:
- เปิด Expression Editor (คลิกที่ field แล้วเลือก Expression)
- ดู Preview ที่แสดงผลลัพธ์จาก last execution
- ตรวจสอบว่า
$json,$node,$executionอ้างถึงสิ่งที่ถูกต้อง
Debug Code Node
เพิ่ม console.log ใน Code Node เพื่อดูค่า intermediate:
const items = $input.all();
console.log('Total items:', items.length);
console.log('First item:', JSON.stringify(items[0]?.json));
const result = items.map(item => {
console.log('Processing:', item.json.id);
return { json: { ...item.json, processed: true } };
});
return result;
ดู console output ได้ใน browser DevTools (F12 → Console) หรือใน n8n server log ถ้า self-host
ทดสอบ Webhook โดยไม่ต้องรอ Request จริง
Workflow ที่ใช้ Webhook Trigger มักทดสอบยากเพราะต้องรอให้มีคนส่ง Request มา ใช้เทคนิคเหล่านี้:
- Test Mode — คลิก “Listen for test event” ใน Webhook Node แล้วส่ง Request ด้วย Postman หรือ cURL
- Pin Data — Pin output ของ Webhook Node ด้วยข้อมูลตัวอย่าง แล้ว Test Node ถัดๆ ไปได้เลย
- Manual Trigger สลับกัน — ใช้ Manual Trigger แทน Webhook ระหว่าง Development แล้วสลับกลับเมื่อพร้อม Deploy
ป้องกันปัญหาตั้งแต่ต้น
Debug ง่ายกว่าถ้าเขียน Workflow ดีตั้งแต่แรก:
- ตั้งชื่อ Node ให้สื่อความหมาย ไม่ใช่ “HTTP Request 3”
- เพิ่ม Notes ใน Node ที่มี Logic ซับซ้อน
- ใช้ Sticky Note ใน Canvas อธิบาย Flow โดยรวม
- ทดสอบ Workflow ด้วยข้อมูล Edge Case เช่น ข้อมูลว่าง, ตัวเลขเป็น 0, field ที่ขาดหายไป
การ Debug ที่ดีไม่ใช่แค่การแก้ปัญหาเฉพาะหน้า แต่คือการเข้าใจว่าปัญหาเกิดได้เพราะอะไร และป้องกันไม่ให้เกิดซ้ำในอนาคต Workflow ที่ผ่านการ Debug อย่างทั่วถึงมักแข็งแกร่งและน่าเชื่อถือกว่า Workflow ที่ทำงานได้โดยบังเอิญตั้งแต่แรก
อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co
Related posts
Error Handling ใน n8n: จัดการ Error อย่างมืออาชีพ
เรียนรู้วิธีจัดการ Error ใน n8n ทั้ง Error Trigger, Try/Catch และการตั้งค่า Retry เพื่อให้ Workflow ทำงานได้อย่างน่าเชื่อถือ
n8n Advanced: 10 เทคนิคขั้นสูงสำหรับมืออาชีพ
รวม 10 เทคนิค n8n ขั้นสูงที่มืออาชีพใช้จริง ตั้งแต่ Error Handling, Sub-Workflow, Code Node ไปจนถึง API Pagination
สร้าง AI Agent ด้วย n8n: ให้ AI ทำงานแทนคุณ
วิธีสร้าง AI Agent ใน n8n ที่วางแผนและใช้ Tools เองได้ ตั้งแต่ตั้งค่าจนถึง Agent หลายขั้นตอนขั้นสูง