Code 노드 일반적인 문제
다음은 Code 노드에서 자주 발생하는 오류와 문제, 그리고 해결 또는 트러블슈팅 방법입니다. 이 오류는 Code 노드의 코드가 예상된 형식으로 데이터를 반환하지 않을 때 발생합니다. n8n에서 노드 간에 전달되는 모든 데이터는 객체 배열입니다.
다음은 Code 노드에서 자주 발생하는 오류와 문제, 그리고 해결 또는 트러블슈팅 방법입니다.
Code doesn't return items properly#
이 오류는 Code 노드의 코드가 예상된 형식으로 데이터를 반환하지 않을 때 발생합니다.
n8n에서 노드 간에 전달되는 모든 데이터는 객체 배열입니다. 각 객체는 json 키를 가진 또 다른 객체를 감싸고 있습니다:
[
{
"json": {
// 데이터를 여기에 입력하세요
}
}
]
이 오류를 트러블슈팅하려면 다음을 확인하세요:
- 데이터 구조를 읽고 Code 노드에서 수신하는 데이터와 노드에서 데이터를 출력하기 위한 요구사항을 이해하세요.
- 데이터 아이템의 작동 방식과 아이템 링킹을 통해 이전 노드의 데이터 아이템을 연결하는 방법을 이해하세요.
A 'json' property isn't an object#
이 오류는 Code 노드가 json 키가 객체를 가리키지 않는 데이터를 반환할 때 발생합니다.
json을 배열과 같은 다른 데이터 구조로 설정하면 이 오류가 발생할 수 있습니다:
[
{
"json": [
// `json`을 이런 식으로 배열로 설정하면 오류가 발생합니다
]
}
]
이를 해결하려면 반환 데이터에서 json 키가 객체를 참조하도록 하세요:
[
{
"json": {
// 예상대로 `json`을 객체로 설정
}
}
]
Code doesn't return an object#
이 오류는 Code 노드가 아무것도 반환하지 않거나 예상치 못한 결과를 반환할 때 발생할 수 있습니다.
이를 해결하려면 Code 노드가 예상된 데이터 구조를 반환하는지 확인하세요:
[
{
"json": {
// 데이터를 여기에 입력하세요
}
}
]
이 오류는 제공한 코드가 예상 결과 대신 'undefined'를 반환하는 경우에도 발생할 수 있습니다. 그런 경우 Code 노드에서 참조하는 데이터가 각 실행에 존재하고 코드가 예상하는 구조를 갖고 있는지 확인하세요.
'import' and 'export' may only appear at the top level#
이 오류는 Code 노드에서 import 또는 export를 사용하려고 할 때 발생합니다. 이는 n8n의 JavaScript 샌드박스에서 지원되지 않습니다. 대신 require 함수를 사용하여 모듈을 로드하세요.
이 문제를 해결하려면 import 문을 require로 변경해 보세요:
// 원래 코드:
// import express from "express";
// 새 코드:
const express = require("express");
Cannot find module '<module>'#
이 오류는 Code 노드에서 require를 사용하려고 하는데 n8n이 해당 모듈을 찾을 수 없을 때 발생합니다.
n8n은 Cloud 버전에서 모듈 가져오기를 지원하지 않습니다.
셀프 호스팅 n8n을 사용하는 경우 다음 단계를 따르세요:
- n8n 환경에 모듈을 설치하세요.
NODE_FUNCTION_ALLOW_BUILTIN및NODE_FUNCTION_ALLOW_EXTERNAL환경 변수를 설정하여 모듈 가져오기를 허용하세요.
전역 변수 사용하기#
때로는 실행 간 및 실행 내에서 워크플로우와 관련된 간단한 전역 데이터를 설정하고 검색하고 싶을 수 있습니다. 예를 들어 프로젝트 업데이트 목록이 포함된 보고서를 작성할 때 이전 보고서 날짜를 포함하고 싶을 수 있습니다.
워크플로우에 직접 데이터를 설정, 업데이트 및 검색하려면 코드 내에서 정적 데이터 함수를 사용하세요. 전역으로 또는 특정 노드에 연결하여 데이터를 관리할 수 있습니다.
동일한 데이터 아이템을 두 번 이상 처리하지 않기 위해 변수를 사용하려는 경우 대신 Remove Duplicates 노드 사용을 고려하세요. Remove Duplicates 노드는 동일한 아이템을 여러 번 처리하지 않도록 실행 간에 정보를 저장할 수 있습니다.
Code 노드에서 자격 증명에 접근할 수 없음#
설계상 Code 노드는 자격 증명에 접근할 수 없습니다. n8n의 내부 자격 증명 관리 시스템에 접근할 수 없습니다. 이는 민감한 인증 데이터의 노출을 방지합니다.
this.getCredentials() 또는 $getCredentials()와 같은 표현식이나 메서드를 사용하여 Code 노드에서 자격 증명을 참조하려는 시도는 this.getCredentials is not a function 및 $getCredentials is not defined와 같은 오류를 발생시킵니다.
인증된 API 호출을 해야 하는 경우 자격 증명 지원을 제공하는 HTTP Request 노드를 사용하세요.
자격 증명을 동적으로 처리하려면 Code 노드 외부에서 자격 증명 선택 로직을 처리하세요:
- Switch 노드를 사용하여 다른 자격 증명을 가진 다른 노드로 라우팅하세요.
- 자격 증명 필드에서 직접 표현식을 사용하여 이전 노드 데이터를 기반으로 자격 증명을 동적으로 선택하세요.
- Custom Auth가 포함된 HTTP Request 노드를 사용하여 표현식으로 헤더, 쿼리 파라미터 또는 본문 값을 동적으로 설정하세요.
