Skip to content

Code node common issues#

นี่คือข้อผิดพลาดและปัญหาที่พบบ่อยกับ Code node พร้อมวิธีแก้ไขหรือแนวทางตรวจสอบ

Code doesn't return items properly#

ข้อผิดพลาดนี้เกิดขึ้นเมื่อโค้ดใน Code node ของคุณไม่ได้ return ข้อมูลในรูปแบบที่ n8n คาดหวัง

ใน n8n ข้อมูลที่ส่งต่อระหว่าง node จะเป็น array ของ object โดยแต่ละ object จะมี key ชื่อ json ครอบข้อมูลอีกที

1
2
3
4
5
6
7
[
  {
    "json": {
	  // ข้อมูลของคุณใส่ตรงนี้
	}
  }
]

วิธีตรวจสอบปัญหานี้:

  • อ่าน data structure เพื่อเข้าใจโครงสร้างข้อมูลที่ Code node ได้รับและข้อกำหนดสำหรับการ return ข้อมูลออกจาก node
  • ทำความเข้าใจการทำงานของ data item และการเชื่อมโยงข้อมูลจาก node ก่อนหน้าด้วย item linking

A 'json' property isn't an object#

ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Code node return ข้อมูลที่ key json ไม่ได้ชี้ไปที่ object

เช่น ถ้าคุณตั้งค่า json ให้เป็น array แทน object:

1
2
3
4
5
6
7
[
  {
    "json": [
	  // ตั้ง json เป็น array แบบนี้จะ error
	]
  }
]

วิธีแก้ไข: ให้แน่ใจว่า key json อ้างอิง object เสมอ

1
2
3
4
5
6
7
[
  {
    "json": {
	  // ตั้ง json เป็น object ตามที่ระบบต้องการ
	}
  }
]

Code doesn't return an object#

ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อ Code node ของคุณไม่ได้ return อะไรเลย หรือ return ผลลัพธ์ที่ไม่ถูกต้อง

วิธีแก้ไข: ให้แน่ใจว่า Code node ของคุณ return expected data structure:

1
2
3
4
5
6
7
[
  {
    "json": {
	  // ข้อมูลของคุณใส่ตรงนี้
	}
  }
]

ข้อผิดพลาดนี้อาจเกิดขึ้นถ้าโค้ดของคุณ return 'undefined' แทนผลลัพธ์ที่ต้องการ กรณีนี้ให้ตรวจสอบว่าข้อมูลที่คุณอ้างอิงใน Code node มีอยู่จริงในทุก execution และมีโครงสร้างตรงกับที่โค้ดของคุณคาดหวัง

'import' and 'export' may only appear at the top level#

ข้อผิดพลาดนี้เกิดขึ้นถ้าคุณพยายามใช้ import หรือ export ใน Code node ซึ่ง n8n ไม่รองรับใน JavaScript sandbox ให้ใช้ require แทน

วิธีแก้ไข: เปลี่ยนจาก import เป็น require เช่น

1
2
3
4
// โค้ดเดิม:
// import express from "express";
// โค้ดใหม่:
const express = require("express");

Cannot find module '<module>'#

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณใช้ require ใน Code node แล้ว n8n หา module ไม่เจอ

Only for self-hosted

n8n ไม่รองรับการ import module ใน Cloud version

ถ้าคุณ self-hosting n8n ให้ทำตามขั้นตอนนี้:

  • ติดตั้ง module ลงใน environment เดียวกับที่รัน n8n
    • ถ้าใช้ npm ให้ติดตั้ง module ใน environment เดียวกับ n8n
    • ถ้าใช้ Docker ต้อง extend image n8n ด้วย custom image ที่มี module ที่ต้องการ
  • ตั้งค่า environment variable NODE_FUNCTION_ALLOW_BUILTIN และ NODE_FUNCTION_ALLOW_EXTERNAL ดูตัวอย่าง เพื่ออนุญาต import module

Using global variables#

บางครั้งคุณอาจอยากเก็บหรือดึงข้อมูลแบบ global ที่เกี่ยวกับ workflow ข้าม execution หรือในแต่ละ execution เช่น อยากเก็บวันที่ของ report ก่อนหน้าไว้ใช้ใน report รอบถัดไป

ให้ใช้ static data ในโค้ดของคุณเพื่อ set, update, และดึงข้อมูล workflow-level สามารถจัดการข้อมูลแบบ global หรือผูกกับ node เฉพาะก็ได้

Use Remove Duplicates when possible

ถ้าคุณอยากใช้ตัวแปรเพื่อป้องกันการประมวลผลข้อมูลซ้ำ ลองใช้ Remove Duplicates node แทน Remove Duplicates node จะช่วยเก็บข้อมูลข้าม execution เพื่อป้องกันการประมวลผลซ้ำ