화. 8월 19th, 2025

D: 🚀 N8N의 핵심 기능 중 하나인 Code Node!
개발자라면 반드시 알아야 할 필수 문법과 디버깅 노하우를 한 번에 정리해드립니다.
초보자도 쉽게 따라할 수 있도록 예시와 함께 상세히 설명드릴게요!


🔍 Code Node란?

N8N 워크플로우에서 커스텀 JavaScript/Python 코드를 실행할 수 있는 특별한 노드입니다.
기본 노드로 처리할 수 없는 복잡한 로직을 구현할 때 💪 강력한 힘을 발휘합니다.

// 기본 구조 예시
return {
  json: {
    message: "Hello World!",
    data: $input.all()[0].json
  }
};

📚 필수 문법 5가지

  1. 입력 데이터 접근

    • $input.all(): 모든 입력 항목 배열 가져오기
    • $input.first(): 첫 번째 입력 항목만 선택
    // 예시: 이메일 주소 추출
    const userData = $input.first().json;
    return { json: { email: userData.email } };
  2. 변수 & 함수 사용

    • 일반 JavaScript 문법과 동일
    • 중요! 반드시 return으로 결과 출력
    function calculateDiscount(price) {
     return price * 0.9; // 10% 할인
    }
    
    return { json: { finalPrice: calculateDiscount(10000) } };
  3. 외부 모듈 사용

    • 기본 내장 모듈만 사용 가능 (fs, axios 등)
    • 커스텀 모듈은 Function Item 노드에서 별도 설정 필요
    const moment = require('moment'); // 날짜 처리
    return { json: { today: moment().format('YYYY-MM-DD') } };
  4. 에러 핸들링

    • try-catch로 안전한 코드 작성
    try {
     const riskyData = $input.first().json.undefinedKey;
    } catch (error) {
     return { json: { error: "데이터 처리 실패!" } };
    }
  5. 다중 출력 처리

    • 배열 반환 시 여러 항목 출력 가능
    return [
     { json: { type: "A", value: 1 } },
     { json: { type: "B", value: 2 } }
    ];

🛠 디버깅 필살기

  1. console.log() 활용

    • 실행 로그에서 확인 가능 (노드 우클릭 > Execute Node)
    console.log("디버그 시작!", $input.all());
  2. 테스트 데이터 사용

    • Set 버튼으로 샘플 데이터 입력 후 테스트
  3. Node-RED 스타일 디버그

    • $node 객체로 특정 값 모니터링
    $node.setOutputData([{ json: { debugData: tempValue } }]);
  4. 에러 메시지 분석

    • Syntax Error: 줄 번호 확인 → 코드 하이라이트 기능 활용
    • Runtime Error: 스택 트레이스 따라가기
  5. 작은 단위 테스트

    • 복잡한 로직은 → Function 노드 분할 → 단계별 검증

💡 실전 예제 모음

1. API 응답 가공

const response = await axios.get('https://api.example.com/data');
return {
  json: {
    processed: response.data.items.map(item => ({
      id: item.id,
      name: item.name.toUpperCase()
    }))
  }
};

2. 데이터 필터링

const users = $input.first().json.users;
return {
  json: {
    activeUsers: users.filter(user => user.status === 'active')
  }
};

3. 날짜 비교

const now = new Date();
const deadline = new Date('2023-12-31');
return {
  json: {
    isExpired: now > deadline,
    daysLeft: Math.floor((deadline - now) / (1000 * 60 * 60 * 24))
  }
};

자주 묻는 질문

Q. Python 코드도 사용할 수 있나요?
→ 네! Python Node 설치 후 사용 가능 (별도 설정 필요)

Q. 코드 실행 시간 제한이 있나요?
→ 기본 30초 제한 (설정에서 변경 가능)

Q. 다른 노드의 결과를 재사용할 수 있나요?
$input.all()로 모든 이전 노드 출력에 접근 가능


🎯 마무리 팁

  • 코드 스니펫 저장 → 자주 사용하는 로직은 템플릿으로 등록
  • 주석 필수 → 협업 시 이해도 ↑ (Ctrl + / 단축키)
  • 버전 관리 → GitHub 연동으로 변경 이력 추적

> ✨ Code Node 마스터가 되면 N8N 활용도가 200% 상승합니다!
> 지금 바로 워크플로우에 적용해보세요. 처음엔 어렵지만 점점 코딩이 재미있어지는 마법 같은 경험을 하게 될 거예요 😊

혹시 특정 기능 구현에 어려움을 겪고 있다면 댓글로 문의주세요!
여러분의 성공적인 자동화를 응원합니다 💪🚀

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다