본문으로 건너뛰기

개발 중 자주 발생하는 런타임 오류 참고

오류 설명 조각원인해결 방법
attempt to perform arithmetic on a숫자가 아닌 값에 수학 연산(+, -, *, /)을 시도함수학 연산 전에 모든 입력이 숫자인지 확인하십시오.
attempt to compare비교할 수 없는 값에 비교 연산(>, <, >=, <=)을 시도함비교 전에 양쪽 입력을 서로 비교할 수 있는지 확인하십시오.
attempt to concatenate a문자열이 아닌 값의 연결(..)을 시도함문자열을 연결하기 전에 양쪽 값이 모두 문자열인지 확인하십시오.
attempt to call a함수가 아닌 변수를 호출하려고 함함수를 호출하기 전에 해당 값이 함수인지 확인하십시오.
attempt to index a테이블이 아닌 변수를 인덱싱하려고 함배열 또는 연관 배열 변수에서 값을 가져오기 전에 해당 값이 테이블인지 확인하십시오.
attempt to yield across a C-call boundary제어권을 양보할 수 없는 호출 블록에서 양보하려고 함모듈을 require할 때, require된 모듈이 반환되기 전에 제어권을 양보하는 함수(매뉴얼에서 함수 앞에 느낌표가 있음)를 호출하지 않았는지 확인하십시오. 또한 C 콜백이 있는 함수 안에서 제어권을 양보하는 함수를 사용하지 마십시오.
invalid order function for sorting잘못된 정렬 함수. 일반적으로 정렬 함수의 규칙이 명확하지 않을 때 발생함정렬 함수를 호출할 때 규칙을 명확히 지정하십시오. a가 b보다 크면서 동시에 작기도 한 규칙을 만들지 마십시오.
bad argument #1 to 'xxx' (number expected, got nil)xxx 함수 호출 시 #1 인수의 형식이 잘못됨. number가 필요하지만 nil이 전달됨올바른 형식의 인수를 전달하십시오.
bad argument #2 to 'xxx' (number has no integer representation)xxx 함수 호출 시 #2 인수를 정수로 변환할 수 없음올바른 형식의 인수를 전달하십시오.
bad argument #3 to 'xxx'xxx 함수 호출 시 #3 인수가 잘못됨올바른 인수를 전달하십시오.
  • require 사용 시 attempt to yield across a C-call boundary 오류가 발생할 때의 임시 해결 방법
      1. require되는 모듈 코드 맨 앞에 return function() 한 줄을 추가합니다.
      1. require되는 모듈 코드 맨 끝에 end 한 줄을 추가합니다.
      1. require할 때 뒤에 괄호 한 쌍을 더 붙입니다. 예: require('A')require('A')()로 변경합니다.