NodeCrypto 도움말

에러 및 자원 한도

스크립트 진단은 크게 두 범주로 나뉜다: 노드를 편집하고 저장할 때 검출되는 정적(컴파일 시점) 에러와 워크플로우 실행 도중 발생하는 런타임 에러이다.

정적 에러 (컴파일 시점)

정적 에러는 속성 창에서 저장을 차단하며 정확한 줄:열 위치를 알려준다. 저장된 워크플로우 파일을 열었을 때 정적 검사에 실패하면(예: 지원하지 않는 스크립트 버전) 실행 시점에 SCRIPT_COMPILE_ERROR로 실패한다.

문법 진단 코드

진단 코드의미 및 해결 방법
SCRIPT_SYNTAX_SOURCE_TOO_LARGE스크립트 소스 크기가 64 KiB를 초과함. 반복되는 논리를 함수나 루프로 묶는다.
SCRIPT_SYNTAX_TAB_INDENT들여쓰기에 탭 문자가 사용됨. 단계당 공백 4칸으로 들여쓴다.
SCRIPT_SYNTAX_INDENT_UNIT들여쓰기가 공백 4칸의 배수가 아님.
SCRIPT_SYNTAX_INDENT_TOO_DEEP들여쓰기가 한 번에 4칸(한 단계)보다 많이 증가함.
SCRIPT_SYNTAX_UNEXPECTED_INDENT새 블록이 열리지 않은 위치에서 들여쓰기가 증가함.
SCRIPT_SYNTAX_EXPECTED_INDENT콜론(:) 다음 줄에 들여쓰기된 블록이 없음.
SCRIPT_SYNTAX_BLOCK_SAME_LINE콜론(:)과 같은 줄에 블록 본문을 작성함. 다음 줄로 내려 공백 4칸 들여쓴다.
SCRIPT_SYNTAX_SEMICOLON문장을 이어 붙이기 위해 세미콜론(;)을 사용함. 한 줄에 한 문장만 작성한다.
SCRIPT_SYNTAX_LINE_CONTINUATION백슬래시(\) 줄 연결을 사용함. 여러 줄 식은 소괄호로 감싼다.
SCRIPT_SYNTAX_UNCLOSED_BRACKET닫히지 않은 소괄호 ( 또는 대괄호 [가 있음.
SCRIPT_SYNTAX_UNMATCHED_BRACKET짝이 맞지 않는 닫는 괄호가 있음.
SCRIPT_SYNTAX_BRACEf-string 바깥에서 중괄호 { }를 사용함 (딕셔너리와 집합은 지원하지 않음).
SCRIPT_SYNTAX_UNKNOWN_CHAR문자열 리터럴과 주석 바깥에 인식할 수 없는 문자가 있음.
SCRIPT_SYNTAX_RESERVED_NAME식별자가 예약된 이중 밑줄(__)로 시작함.
SCRIPT_SYNTAX_FLOAT부동소수점 리터럴을 사용함. 정수만 지원한다.
SCRIPT_SYNTAX_INVALID_NUMBER잘못된 형식의 정수 리터럴임.
SCRIPT_SYNTAX_SINGLE_QUOTE작은따옴표 문자열을 사용함. 큰따옴표("...")를 사용한다.
SCRIPT_SYNTAX_UNTERMINATED_STRING문자열 또는 바이트 리터럴의 닫는 따옴표가 누락됨.
SCRIPT_SYNTAX_BAD_ESCAPE지원하지 않는 이스케이프 시퀀스임 (\\, \", \n, \r, \t, \uNNNN만 허용).
SCRIPT_SYNTAX_HEX_INVALID_CHARh"..." 리터럴에 16진수가 아닌 문자(또는 0x 접두어)가 포함됨.
SCRIPT_SYNTAX_HEX_ODD_DIGITSh"..." 리터럴의 16진수 숫자 개수가 홀수임.
SCRIPT_SYNTAX_BIN_INVALID_CHARb"..." 리터럴에 0, 1, 공백 이외의 문자가 포함됨 (16진수는 h"...", UTF-8 텍스트는 s"..." 사용).
SCRIPT_SYNTAX_BIN_BIT_COUNTb"..." 리터럴의 비트 개수가 8의 배수가 아님.
SCRIPT_SYNTAX_LITERAL_PREFIX_SPACE리터럴 접두어(h/b/s/f)와 여는 따옴표 사이에 공백이 있음.
SCRIPT_SYNTAX_LITERAL_MIXED_KIND서로 다른 종류의 인접 리터럴을 이어 붙임. + 연산자를 사용한다.
SCRIPT_SYNTAX_LITERAL_CONCAT_OUTSIDE_PAREN소괄호 바깥에서 인접 리터럴을 이어 붙임. (...)로 감싸거나 +를 사용한다.
SCRIPT_SYNTAX_FSTRING_BRACEf-string 안에 이스케이프되지 않은 단독 }가 있음. 문자 그대로 쓰려면 }}로 표기한다.
SCRIPT_SYNTAX_FSTRING_FIELD잘못된 f-string 보간 필드임 (식 내부에는 따옴표, 중괄호, 백슬래시를 쓸 수 없음).
SCRIPT_SYNTAX_FSTRING_EMPTYf-string 안에 빈 보간 필드 {}가 있음.
SCRIPT_SYNTAX_UNEXPECTED_TOKEN문장이나 식에 예상치 못한 토큰이 나타남.
SCRIPT_SYNTAX_UNSUPPORTED지원하지 않는 Python 구문(import, class, while, lambda, try, print 등)을 사용함.
SCRIPT_SYNTAX_UNSUPPORTED_OPERATOR지원하지 않는 연산자(** 또는 /)를 사용함. pow(base, exp, mod) 또는 //를 사용한다.
SCRIPT_SYNTAX_ATTRIBUTE속성 접근 또는 메서드 호출(.)을 사용함. 내장 함수를 직접 호출한다.
SCRIPT_SYNTAX_COMPREHENSION리스트 컴프리헨션을 사용함. for 루프와 += [item]을 사용한다.
SCRIPT_SYNTAX_CHAINED_COMPARISON연쇄 비교(a < b < c)를 사용함. (a < b) and (b < c)로 풀어서 작성한다.
SCRIPT_SYNTAX_CALL_TARGET식별자가 아닌 일반 식을 함수처럼 호출함.
SCRIPT_SYNTAX_POSITIONAL_AFTER_KEYWORD키워드 인자 뒤에 위치 인자를 전달함.
SCRIPT_SYNTAX_EXPR_STATEMENT함수 호출이 아닌 일반 식을 단독 문장으로 사용함.
SCRIPT_SYNTAX_DANGLING_ELSE대응하는 if 없이 elif 또는 else를 사용함.
SCRIPT_SYNTAX_NESTED_DEF다른 블록 내부에 함수를 정의함. 모든 함수는 최상위에 정의한다.
SCRIPT_SYNTAX_ANNOTATION_NO_VALUE초기값 없이 타입 표기만 작성함 (x: int = 0처럼 초기값을 함께 작성).
SCRIPT_SYNTAX_UNPACK_RHS튜플 언패킹 대입의 우변이 튜플이나 함수 호출이 아님.
SCRIPT_SYNTAX_TUPLE_CONTEXTreturn 문이나 언패킹 대입 이외의 위치에서 튜플을 사용함.
SCRIPT_SYNTAX_TUPLE_ARITYtuple[...] 반환 타입 표기의 원소 타입이 2개 미만임.
SCRIPT_SYNTAX_PARAM_TYPE함수 매개변수에 타입 표기가 누락됨.
SCRIPT_SYNTAX_PARAM_DEFAULT사용자 정의 함수의 매개변수에 기본값을 지정함.
SCRIPT_SYNTAX_UNKNOWN_TYPE알 수 없는 타입 이름을 표기함 (int, bool, bytes, string, list[...] 사용).
SCRIPT_SYNTAX_NESTED_LIST중첩 리스트 타입 표기 list[list[...]]는 지원하지 않음.

이름·타입·흐름 진단 코드

진단 코드의미 및 해결 방법
SCRIPT_TYPE_MISMATCH대입문, 조건식, 연산자 피연산자 또는 함수 인자의 타입이 일치하지 않음.
SCRIPT_OUTPUT_TYPE_MISMATCH출력 포트 변수에 대입한 값의 타입이 해당 포트의 선언 타입과 다름.
SCRIPT_OUTPUT_UNASSIGNED모든 실행 경로에서 출력 포트 변수가 확정 대입되지 않음 (확정 대입 검사 참고).
SCRIPT_UNASSIGNED모든 경로에서 대입이 보장되지 않은 변수를 읽으려 함.
SCRIPT_INPUT_READONLY읽기 전용인 입력 포트 변수에 값을 재대입하거나 수정하려 함.
SCRIPT_NAME_UNDEFINED정의되지 않은 변수 또는 함수 이름을 참조함.
SCRIPT_NAME_RESERVED내장 함수 이름을 변수나 사용자 정의 함수 이름으로 사용함.
SCRIPT_NAME_CONFLICT식별자가 기존 함수, 변수, 상수, 매개변수 또는 포트 이름과 충돌함.
SCRIPT_CONST_NOT_TOP대문자 상수를 최상위가 아닌 블록 내부에서 정의함.
SCRIPT_CONST_REASSIGN불변 상수에 값을 재대입하거나 수정하려 함.
SCRIPT_CONST_INVALID상수 초기화 식에서 일반 변수나 입력 포트를 참조함.
SCRIPT_FUNC_SCOPE함수 본문에서 최상위 변수, 입력 포트 또는 출력 포트를 직접 참조함.
SCRIPT_FUNC_ORDER정의되기 전의 사용자 함수를 호출하거나 재귀 호출을 시도함.
SCRIPT_CALL_ARGS함수 호출의 인자 개수가 맞지 않거나 잘못된 키워드 인자 이름을 사용함.
SCRIPT_RETURN_OUTSIDE함수 바깥에서 return 문을 사용함.
SCRIPT_RETURN_TYPE반환값의 타입이 함수에 선언된 반환 타입과 일치하지 않음.
SCRIPT_RETURN_MISSING값을 반환하는 함수에 return으로 끝나지 않는 실행 경로가 있음.
SCRIPT_TUPLE_MISMATCH튜플 언패킹 좌변 변수의 개수가 맞지 않거나 같은 변수가 중복됨.
SCRIPT_TUPLE_MISMATCH / SCRIPT_TUPLE_CONTEXT언패킹이나 return 이외의 곳에서 튜플 값을 사용함.
SCRIPT_RANGE_CONTEXTfor 루프 헤더 이외의 위치에서 range(...)를 사용함.
SCRIPT_LOOP_CONTROL_OUTSIDEfor 루프 바깥에서 break 또는 continue를 사용함.
SCRIPT_EMPTY_LIST명시적 타입 표기 없이 빈 리스트 []를 사용함 (xs: list[bytes] = []처럼 표기).
SCRIPT_NESTED_LIST중첩 리스트를 생성하려 함.
SCRIPT_INT_LITERAL_TOO_LARGE정수 리터럴이 1,048,576비트를 초과함.
SCRIPT_FORMAT_INVALID식의 타입에 맞지 않는 f-string 포맷 지정자이거나 필드 폭 한도(> 4,096)를 초과함.

포트 스키마 진단 코드

진단 코드의미 및 해결 방법
SCRIPT_PORT_INVALID_ID포트 이름이 식별자 규칙([A-Za-z_][A-Za-z0-9_]*)을 위반하거나 __로 시작함.
SCRIPT_PORT_RESERVED_ID포트 이름이 예약어 또는 내장 함수 이름과 충돌함.
SCRIPT_PORT_DUPLICATE_IDScript 노드 내 두 포트가 동일한 이름·ID를 가짐.
SCRIPT_PORT_INVALID_TYPE포트 데이터 타입이 bytes, int, bool, string 중 하나가 아님.

런타임 에러

에러 코드의미예시
SCRIPT_COMPILE_ERROR저장된 스크립트가 정적 검증에 실패했거나 지원하지 않는 스크립트 버전을 사용함.—
SCRIPT_DIVISION_BY_ZERO// 또는 % 연산의 제수가 0임.1 // 0
SCRIPT_INDEX_OUT_OF_RANGE리스트 인덱스 또는 슬라이스 범위가 리스트 길이를 벗어남.[1, 2][5]
SCRIPT_INVALID_ARGUMENT음수 비트 시프트 횟수, 0인 range 증분(step), 또는 잘못된 pow 인자임.1 << -1
SCRIPT_INVALID_ERROR_CODEfail(code, message)에 전달한 사용자 정의 코드가 예약된 SCRIPT_ 또는 BYTES_로 시작함.—
SCRIPT_SIZE_LIMIT정수 비트 길이, 리스트 길이 또는 루프 반복 횟수가 1,048,576을 초과함.1 << 2000000
SCRIPT_STEP_LIMIT실행 중 평가 스텝 수가 10,000,000 한도를 초과함.—
SCRIPT_TIMEOUT실제 경과 실행 시간이 시간 한도(웹 3초, API Container 10초)를 초과함.—
SCRIPT_INTERNAL_ERROR예상치 못한 인터프리터 내부 오류임.—

바이트 연산 에러

에러 코드의미예시
BYTES_OUT_OF_RANGE바이트 인덱스 또는 슬라이스 범위가 버퍼 경계를 벗어남.h"01 02"[2]
BYTES_LENGTH_MISMATCH바이트열 비트 연산의 두 피연산자 길이가 다르거나 슬라이스 대입 길이가 맞지 않음.h"01" ^ h"01 02"
BYTES_INT_OVERFLOW정수가 지정한 바이트 길이와 부호 설정 범위 안에 들어가지 않음.to_bytes(256, 1)
BYTES_INVALID_HEXfrom_hex에 유효하지 않은 16진수 문자열이 전달됨.from_hex("zz")
BYTES_INVALID_UTF8to_utf8에 유효하지 않은 UTF-8 바이트 시퀀스가 전달됨.to_utf8(h"c3 28")
BYTES_INVALID_ARGUMENT음수 길이·횟수, 범위를 벗어난 바이트 값 또는 잘못된 엔디안 문자열이 전달됨.to_int(h"01", "middle")
BYTES_SIZE_LIMIT결과 바이트열 크기가 16 MiB 버퍼 한도를 초과함.zeros(20000000)

자원 한도

자원한도초과 시 에러 코드
평가 스텝 수10,000,000SCRIPT_STEP_LIMIT
단일 bytes 버퍼 크기16 MiBBYTES_SIZE_LIMIT
단일 list 길이 / for 루프 반복 횟수1,048,576SCRIPT_SIZE_LIMIT
단일 int 비트 길이1,048,576비트SCRIPT_SIZE_LIMIT (또는 SCRIPT_INT_LITERAL_TOO_LARGE)
스크립트 소스 크기64 KiBSCRIPT_SYNTAX_SOURCE_TOO_LARGE
f-string 필드 폭4,096SCRIPT_FORMAT_INVALID
실행 제한 시간(Wall-Clock)3초 (웹) / 10초 (API Container)SCRIPT_TIMEOUT
o = 0
for i in range(1000000):
    for j in range(100):
        o += 1
o = 0
for i in range(2000000):
    o += 1