다크 모드
Code 노드
Code 노드는 격리된 실행 환경에서 JavaScript 또는 Python 코드를 실행해 기본 노드만으로 표현하기 어려운 계산과 데이터 처리를 수행합니다.
언제 사용하나요?
- 문자열 정규화, 배열 생성, 수치 계산처럼 여러 단계의 로직이 필요할 때
- HTTP 응답 문자열을 JSON으로 파싱하거나 복잡한 객체를 재구성할 때
- 정규식, 반복문, 조건문이 필요한 데이터 처리일 때
단순한 필드 이름 변경은 Transform, 텍스트 조합은 Template, 외부 API 호출은 HTTP을 먼저 고려하세요.
입력
Code 노드는 이전 노드의 출력 필드 중 하나의 입력 소스만 선택할 수 있습니다. 선택한 필드명에서 입력 키가 만들어지며 다음 방식으로 참조합니다.
| 언어 | 입력 참조 | 환경 변수 참조 |
|---|---|---|
| JavaScript | $input.키 또는 $input["키"] | process.env["KEY"] |
| Python | inputs["키"] | env["KEY"] |
입력 참조 추가로 필드를 선택하면 해당 참조가 코드 편집기에 삽입됩니다. 환경 변수 값에는 고정 문자열·숫자·불리언 또는 이전 노드 출력 필드를 사용할 수 있습니다.
주요 설정
| 설정 | 설명 |
|---|---|
| 언어 | JavaScript 또는 Python을 선택합니다. 기본값은 Python입니다. |
| 타임아웃 | 코드 실행 제한 시간입니다. 기본값은 30,000ms이며 100–120,000ms로 설정할 수 있습니다. |
| 코드 | 실행할 스크립트입니다. 공백이 아닌 코드가 반드시 필요합니다. |
| 입력 소스 | 코드에 전달할 이전 노드 출력 필드입니다. 최대 1개입니다. |
| 코드 결과 스키마 | result 아래에 반환할 필드와 타입을 정의합니다. 구조화된 출력을 켜면 중첩 필드를 다음 노드의 변수 선택기에서 선택할 수 있습니다. |
| 환경 변수 | 실행 환경에 전달할 키와 값입니다. 키는 비어 있거나 중복될 수 없습니다. |
JavaScript는 객체를 return하거나 result 변수에 할당합니다. Python은 값을 return하거나 result 변수에 할당합니다. 반환 구조와 코드 결과 스키마는 서로 일치하도록 작성하세요.
출력
Code 노드는 실행 정보와 실제 반환값을 함께 제공합니다.
| 출력 경로 | 타입 | 설명 |
|---|---|---|
success | boolean | 코드가 정상 종료되면 true입니다. |
result | object | 코드가 반환하거나 result에 할당한 값입니다. 구조화된 출력에서는 정의한 하위 필드를 사용할 수 있습니다. |
logs | array | Python의 print, JavaScript의 console.log로 남긴 로그입니다. |
error | string | 실행에 실패했을 때의 오류 메시지입니다. |
executionTimeMs | number | 코드 실행에 걸린 시간(ms)입니다. |
구조화된 출력을 끄면 result 자체는 사용할 수 있지만 스키마에 정의되지 않은 하위 필드는 변수 선택기에 표시되지 않습니다.
연결과 배치 제약
- Code 노드는 일반 워크플로우와 Iteration, Loop 안에 배치할 수 있습니다.
- 입력 소스는 현재 실행 순서와 같은 범위에서 접근 가능한 이전 노드의 필드여야 합니다.
- Loop나 Iteration 안의 Code 노드는 컨테이너 밖 노드와 직접 연결할 수 없습니다.
예시
Input의 text 필드를 선택해 입력 키가 text로 만들어졌다고 가정합니다.
js
const text = String($input.text ?? '').trim();
return {
normalized: text.toLowerCase(),
length: text.length,
};구조화된 결과 스키마에서 normalized를 string, length를 number로 정의하면 다음 노드가 result.normalized와 result.length를 직접 참조할 수 있습니다.
Python에서는 같은 입력을 다음처럼 사용할 수 있습니다.
python
text = str(inputs["text"] or "").strip()
return {
"normalized": text.lower(),
"length": len(text),
}주의사항
- 실행 환경은 격리되어 있으며 파일 시스템, 네트워크, 프로세스 실행과 관련된 위험한 코드 패턴이 차단될 수 있습니다. 외부 요청은 HTTP 노드를 사용하세요.
- 타임아웃이나 메모리 제한으로 프로세스가 종료되면
success가false가 되고error에 원인이 기록됩니다. - 구조화된 결과 스키마는 다음 노드가 필드를 찾는 계약입니다. 코드 반환값을 변경했다면 스키마도 함께 갱신하세요.
- 비밀값을 코드에 직접 넣지 마세요. 환경 변수도 워크플로우 설정의 일부이므로 공유와 내보내기 전에 값을 검토해야 합니다.
- 일부 시스템 환경 변수 이름은 보안 정책에 따라 실행 시 거부됩니다.