콘텐츠로 이동
📣 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 n8n 공식 문서의 한글판을 국내 최초로 제공합니다.

코드 노드 일반 문제#

다음은 Code node와 관련된 일반적인 오류 및 문제와 이를 해결하거나 문제를 해결하기 위한 단계입니다.

코드가 항목을 제대로 반환하지 않음#

이 오류는 코드 노드에서 코드가 예상하는 형식으로 데이터를 반환하지 않을 때 발생합니다.

n8n에서 노드 간에 전달되는 모든 데이터는 객체 배열입니다. 이 객체 각각은 json 키가 있는 다른 객체를 래핑합니다:

1
2
3
4
5
6
7
[
  {
    "json": {
	  // 여기에 데이터가 들어갑니다
	}
  }
]

이 오류를 해결하기 위해 다음을 확인하세요:

  • 데이터 구조를 읽어 코드 노드에서 받은 데이터와 노드에서 데이터를 출력하기 위한 요구 사항을 이해합니다.
  • 데이터 항목이 어떻게 작동하는지 이해하고 이전 노드의 데이터 항목과 항목 연결을 연결하는 방법을 이해합니다.

'json' 속성이 객체가 아님#

이 오류는 코드 노드가 json 키가 객체를 가리키지 않는 데이터를 반환할 때 발생합니다.

이런 상황은 json을 배열과 같은 다른 데이터 구조로 설정하면 발생할 수 있습니다:

1
2
3
4
5
6
7
[
  {
    "json": [
	  // 이렇게 `json`을 배열로 설정하면 오류가 발생합니다
	]
  }
]

이 문제를 해결하려면 json 키가 반환 데이터에서 객체를 참조하도록 하세요:

1
2
3
4
5
6
7
[
  {
    "json": {
	  // 기대되는 대로 `json`을 객체로 설정합니다
	}
  }
]

코드가 객체를 반환하지 않음#

이 오류는 코드 노드가 아무것도 반환하지 않거나 예상치 못한 결과를 반환할 때 발생할 수 있습니다.

이 문제를 해결하려면 코드 노드가 예상되는 데이터 구조를 반환하는지 확인하세요:

1
2
3
4
5
6
7
[
  {
    "json": {
	  // 여기에 데이터가 들어갑니다
	}
  }
]

코드에서 제공한 내용이 예상된 결과 대신 'undefined'를 반환하는 경우에도 이런 오류가 발생할 수 있습니다. 이 경우 코드 노드에서 참조하는 데이터가 각 실행에 존재하며 코드가 예상하는 구조를 가지고 있는지 확인하세요.

'import' 및 'export'는 최상위 수준에서만 사용 가능#

이 오류는 코드 노드에서 import 또는 export를 사용하려고 할 경우 발생합니다. 이러한 기능은 n8n의 JavaScript 샌드박스에서는 지원되지 않습니다. 대신 require 함수를 사용하여 모듈을 로드하세요.

이 문제를 해결하려면 import 문을 require를 사용하도록 변경해 보세요:

1
2
3
4
// 원래 코드:
// import express from "express";
// 새로운 코드:
const express = require("express");

모듈 '<module>'을(를) 찾을 수 없음#

이 오류는 코드 노드에서 require를 사용하려고 할 때 n8n이 모듈을 찾을 수 없을 경우 발생합니다.

제외: 자체 호스팅

n8n은 Cloud 버전에서 모듈을 가져오는 것을 지원하지 않습니다.

자체 호스팅 self-hosting n8n을 사용하는 경우, 다음 단계를 따르세요:

  • n8n 환경에 모듈을 설치합니다.
    • n8n을 npm으로 실행하는 경우, n8n과 동일한 환경에 모듈을 설치하세요.
    • n8n을 Docker로 실행하는 경우, 사용자 정의 이미지(custom image)로 공식 n8n 이미지를 확장하여 모듈을 포함해야 합니다.
  • 모듈을 가져오는 것을 허용하도록 NODE_FUNCTION_ALLOW_BUILTINNODE_FUNCTION_ALLOW_EXTERNAL 환경 변수를 설정합니다.

전역 변수 사용#

때때로 실행 전반에 걸쳐 워크플로와 관련된 간단한 전역 데이터를 설정하고 검색해야 할 수도 있습니다. 예를 들어, 프로젝트 업데이트 목록을 포함한 보고서를 작성할 때 이전 보고서의 날짜를 포함하고자 할 수 있습니다.

워크플로에 직접 데이터를 설정, 업데이트 및 검색하려면 코드 내에서 static data 함수를 사용하세요. 데이터를 전역적으로 관리하거나 특정 노드에 연결하여 관리할 수 있습니다.

가능한 경우 중복 제거 사용

데이터 항목을 여러 번 처리하는 것을 피하기 위해 변수를 사용하는 데 관심이 있다면 Remove Duplicates node를 대신 사용하는 것을 고려하세요. Remove Duplicates 노드는 실행 간 정보를 저장하여 동일한 항목을 여러 번 처리하는 것을 피할 수 있습니다.

인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!