자주 묻는 질문지원 받기 앱으로 이동
목차 보기

사용 설명서 > 개발자 문서 > 검증과 올리기

검증 오류 코드와 고치는 법

마지막 확인일: 2026년 11월 6일

검증은 번들 구조(manifest·권한·Action)와 client 코드(HTML·CSS·JS)를 모두 확인합니다. 올릴 때 나오는 오류의 code 를 아래 표에서 찾아 고치세요. 코드 오류는 줄·열 위치가 함께 표시됩니다.

오류 코드 의미와 고치는 법
action_without_permission Action 이 있는데 그 종류에 필요한 권한이 permissions 에 없다.
bundle_too_large 번들 전체가 1MB를 넘었다. 이미지·큰 데이터를 빼고 코드를 줄인다.
client_validator_failed 검증기 실행에 실패했다. 잠시 후 다시 시도한다(코드 문제가 아닐 수 있다).
computed_destructure_not_allowed 계산된 키로 객체를 분해해 전역·SDK 에 접근할 수 없다.
constructor_access_not_allowed .constructor 로 생성자에 접근할 수 없다.
css_escape_not_allowed CSS 에 우회용 이스케이프 표기를 쓸 수 없다.
css_image_set_not_allowed CSS image-set 을 쓸 수 없다.
css_import_not_allowed CSS 에 @import 를 쓸 수 없다.
css_namespace_url_not_allowed CSS @namespace url 을 쓸 수 없다.
css_syntax_error CSS 구문 오류다. 줄·열 위치를 확인한다.
css_too_large client.css 가 256KB 를 넘었다.
css_url_not_allowed CSS 에 url(...) 을 쓸 수 없다. 이미지는 CSS 배경으로도 불러올 수 없다.
document_access_not_allowed document 를 변수에 담아 쓸 수 없다. document.querySelector(...) 처럼 바로 호출한다.
duplicate_action_key Action key 가 중복됐다.
duplicate_event_name 이벤트 이름이 중복됐다.
duplicate_permission 같은 권한을 두 번 선언했다.
duplicate_variable_name 변수 이름이 중복됐다.
dynamic_global_access_not_allowed 이름을 문자열로 조립해 전역에 접근할 수 없다.
dynamic_sdk_api FC[이름] 같은 동적 접근은 쓸 수 없다. 호출을 직접 쓴다.
eval_not_allowed eval 을 쓸 수 없다.
form_binding_without_permission form_binding 에는 forms.read 또는 forms.submit 권한이 필요하다.
function_constructor_not_allowed new Function() 을 쓸 수 없다.
global_object_access_not_allowed window·parent·top·globalThis·self 같은 전역 객체나 contentWindow 같은 프레임 접근을 쓸 수 없다. DOM 은 document.querySelector 로 직접 접근한다.
global_this_access_not_allowed 최상위에서 this 로 전역 객체에 접근할 수 없다. 화살표 함수나 지역 변수를 쓴다.
html_external_url 외부 주소(http:·https:·// 등)는 쓸 수 없다. 이미지·글꼴·스크립트를 외부에서 불러올 수 없다.
html_forbidden_attribute srcdoc·ping 같은 속성은 쓸 수 없다.
html_forbidden_element script·form·iframe·object·embed·link·base·meta 요소는 쓸 수 없다. 이벤트는 JS 에서 addEventListener 로 연결하고 입력은 form 없이 button type="button" 으로 처리한다.
html_inline_handler onclick 같은 on* 속성은 쓸 수 없다. JS 에서 addEventListener 로 연결한다.
html_parse_error HTML 구문 오류가 있다.
html_too_large client.html 이 256KB 를 넘었다.
html_url_not_allowed src·href 등 URL 속성에는 같은 페이지 앵커(#…)만 쓸 수 있다. 이미지는 JS 로 만든 <img> 의 src 로 넣는다.
invalid_actions manifest.actions 모양이 틀렸다(1~5개, 종류별 필수 키). Action 표를 확인한다.
invalid_bundle 번들이 JSON 객체가 아니거나 최상위 구조가 틀렸다. format_version·manifest·settings·client 네 키만 둔다.
invalid_client_files client 는 html·css·js 세 문자열 키만 가진 객체여야 한다.
invalid_event 이벤트에 name·fields 외의 키가 있거나 모양이 틀렸다.
invalid_event_field 이벤트 필드의 type 은 string·number·boolean 이고 허용된 키(type·required·enum·minimum·maximum)만 쓴다.
invalid_event_fields 이벤트 fields 모양이 틀렸다. { 필드: { type, required } } 로 쓴다.
invalid_event_name 이벤트 이름은 소문자로 시작하고 소문자·숫자·점·밑줄만(최대 64자) 쓴다.
invalid_events manifest.events 는 { name, fields } 배열이어야 한다.
invalid_form_binding manifest.form_binding 모양이 틀렸다.
invalid_format_version format_version 은 정수 1 또는 2 여야 한다.
invalid_html HTML 을 해석하지 못했다.
invalid_html_style HTML 의 style 속성이나 <style> 안에 허용되지 않는 CSS 가 있다.
invalid_manifest manifest 에 필수 키(name·sdk_version·permissions·screens·events·variables)가 빠졌거나 허용되지 않는 키가 있다.
invalid_manifest_name manifest.name 은 비어 있지 않은 문자열이어야 한다.
invalid_permissions manifest.permissions 는 문자열 배열이어야 한다.
invalid_screens manifest.screens 는 { key, label } 배열이어야 한다.
invalid_sdk_version manifest.sdk_version 은 문자열 "1" 이어야 한다.
invalid_setting_value settings 값이 변수의 타입·범위와 맞지 않는다.
invalid_settings settings 는 JSON 객체여야 한다.
invalid_state manifest.state(format_version 2)는 { name, type, default?, persist? } 배열이며 persist 는 false 만 가능하다.
invalid_variable 변수 선언 모양이 틀렸다. { name, type, default } 이고 type 은 text·color·number·boolean·select 다.
invalid_variables manifest.variables 는 배열이어야 한다.
js_syntax_error JavaScript 구문 오류다. 줄·열 위치를 확인한다.
js_too_large client.js 가 256KB 를 넘었다.
missing_form_policy 앱 소유자가 설치 화면에서 허용 Form 을 정해야 한다(번들 문제가 아님).
missing_sdk_permission JS 가 쓰는 FC 호출에 필요한 권한이 manifest.permissions 에 없다. SDK 표의 권한 열을 확인한다.
missing_tag_policy 앱 소유자가 설치 화면에서 허용 태그를 정해야 한다(번들 문제가 아님).
optional_sdk_api_not_allowed FC?.contact?.create 같은 옵셔널 체이닝으로 SDK 를 부를 수 없다. FC.contact.create(...) 로 직접 호출한다.
permission_without_action Action 권한(search.web·ai.generate·webhook.send·image.generate·pdf.generate·upload.file)은 같은 종류의 Action 과 항상 짝이다.
readonly_settings FC.settings 는 읽기 전용이다. 값을 바꾸지 않는다.
reflect_access_not_allowed Reflect.* 로 객체를 조작해 전역·SDK 에 접근할 수 없다.
reflection_access_not_allowed Object.getOwnPropertyDescriptor 같은 리플렉션을 쓸 수 없다.
reserved_event_name contact. · lead. · order. · tag. 로 시작하는 이름은 예약돼 있다. 다른 이름을 쓴다.
sdk_alias_not_allowed FC 를 다른 변수에 담거나 동적으로 접근할 수 없다. FC.contact.create(...) 처럼 직접 호출한다.
too_many_event_fields 이벤트 하나의 필드가 너무 많다.
too_many_events 이벤트는 최대 30개다.
unknown_bundle_keys 최상위에 허용되지 않는 키가 있다. format_version·manifest·settings·client 만 쓴다.
unknown_permission 사용 가능한 권한 어휘에 없는 권한이다. 권한 표를 확인한다.
unknown_setting settings 에 manifest.variables 로 선언하지 않은 키가 있다. 모든 settings 키를 variables 에 선언한다.
unsupported_sdk_api 허용된 SDK 호출이 아니다. SDK 표에 있는 호출만 쓴다.

이 페이지가 도움이 되었나요?