D: 🚀 N8N의 핵심 기능 중 하나인 Code Node!
개발자라면 반드시 알아야 할 필수 문법과 디버깅 노하우를 한 번에 정리해드립니다.
초보자도 쉽게 따라할 수 있도록 예시와 함께 상세히 설명드릴게요!
🔍 Code Node란?
N8N 워크플로우에서 커스텀 JavaScript/Python 코드를 실행할 수 있는 특별한 노드입니다.
기본 노드로 처리할 수 없는 복잡한 로직을 구현할 때 💪 강력한 힘을 발휘합니다.
// 기본 구조 예시
return {
json: {
message: "Hello World!",
data: $input.all()[0].json
}
};
📚 필수 문법 5가지
-
입력 데이터 접근
$input.all()
: 모든 입력 항목 배열 가져오기$input.first()
: 첫 번째 입력 항목만 선택
// 예시: 이메일 주소 추출 const userData = $input.first().json; return { json: { email: userData.email } };
-
변수 & 함수 사용
- 일반 JavaScript 문법과 동일
- 중요! 반드시
return
으로 결과 출력
function calculateDiscount(price) { return price * 0.9; // 10% 할인 } return { json: { finalPrice: calculateDiscount(10000) } };
-
외부 모듈 사용
- 기본 내장 모듈만 사용 가능 (fs, axios 등)
- 커스텀 모듈은 Function Item 노드에서 별도 설정 필요
const moment = require('moment'); // 날짜 처리 return { json: { today: moment().format('YYYY-MM-DD') } };
-
에러 핸들링
try-catch
로 안전한 코드 작성
try { const riskyData = $input.first().json.undefinedKey; } catch (error) { return { json: { error: "데이터 처리 실패!" } }; }
-
다중 출력 처리
- 배열 반환 시 여러 항목 출력 가능
return [ { json: { type: "A", value: 1 } }, { json: { type: "B", value: 2 } } ];
🛠 디버깅 필살기
-
console.log() 활용
- 실행 로그에서 확인 가능 (노드 우클릭 > Execute Node)
console.log("디버그 시작!", $input.all());
-
테스트 데이터 사용
- Set 버튼으로 샘플 데이터 입력 후 테스트
-
Node-RED 스타일 디버그
$node
객체로 특정 값 모니터링
$node.setOutputData([{ json: { debugData: tempValue } }]);
-
에러 메시지 분석
- Syntax Error: 줄 번호 확인 → 코드 하이라이트 기능 활용
- Runtime Error: 스택 트레이스 따라가기
-
작은 단위 테스트
- 복잡한 로직은 → 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% 상승합니다!
> 지금 바로 워크플로우에 적용해보세요. 처음엔 어렵지만 점점 코딩이 재미있어지는 마법 같은 경험을 하게 될 거예요 😊
혹시 특정 기능 구현에 어려움을 겪고 있다면 댓글로 문의주세요!
여러분의 성공적인 자동화를 응원합니다 💪🚀