Adobe 클라이언트 데이터 레이어 문제 해결
이 페이지에서는 Adobe 클라이언트 데이터 레이어(ACDL)의 일반적인 문제를 진단할 수 있습니다. 대부분의 검사는 브라우저의 개발자 콘솔을 사용합니다.
데이터 레이어 검사 inspect
콘솔에서 다음 명령을 실행합니다.
명령
결과
adobeDataLayer.versionACDL 버전(예:
"3.0.1"). undefined인 경우 ACDL이 로드되지 않았습니다.adobeDataLayer.getState()계산 상태입니다.
adobeDataLayer처리된 순서대로 데이터 및 이벤트 개체의 history입니다.
이벤트가 발생할 때 이를 보려면 임시 수신자를 추가합니다.
adobeDataLayer.addEventListener("adobeDataLayer:event", function(event) {
console.log("ACDL event:", event.event, event);
}, { scope: "future" });
콘솔 메시지 console-messages
메시지
원인 및 해결 방법
The following item cannot be handled by the data layer because it does not have a valid format: ...문자열 또는 배열과 같이 일반 개체나 함수가 아닌 값을 푸시했습니다. 메시지에 표시된 값을 푸시하는 코드를 찾습니다. 잘못된 항목을(를) 참조하십시오.
Adobe Client Data Layer v... has already been imported/initialized on this page. You may be erroneously loading it a second time.라이브러리가 두 번 이상 로드되었습니다. 첫 번째 복사본이 계속 작동합니다. 추가 복사본을 제거합니다. 라이브러리를 한 번만 로드를 참조하십시오.
TypeError: adobeDataLayer.getState is not a function(또는 addEventListener, removeEventListener)라이브러리가 로드되기 전에 ACDL 메서드가 호출된 코드입니다. 대신 푸시하는 함수에서 호출합니다. Call 메서드를 안전하게을(를) 참조하십시오.
ReferenceError: structuredClone is not defined브라우저가 ACDL 3.x가 지원하는 것보다 오래되었습니다. 브라우저 요구 사항을 참조하세요.
TypeError: Cannot read properties of null (reading 'event')코드가
null 또는 undefined을(를) 푸시했습니다.RangeError: Maximum call stack size exceeded리스너는 자신을 트리거하는 무엇인가를 밀어냅니다. 무한 루프 방지를 참조하십시오.
JavaScript 오류 메시지의 문구는 브라우저마다 약간 다릅니다. 예를 들어 Safari는 ReferenceError: Can't find variable: structuredClone을(를) 보고합니다.
ACDL이 로드되지 않음 not-loaded
adobeDataLayer.version이(가) undefined인 경우 다음을 확인하십시오.
- 라이브러리가 페이지에 없습니다. 네트워크 패널에서
adobe-client-data-layer.min.js을(를) 확인하거나 태그 확장이 ACDL을 로드하는 경우 태그 라이브러리를 확인합니다. 컨텐츠 보안 정책에서 스크립트를 허용하는지 확인합니다. adobeDataLayer은(는) 배열이 아닙니다. 다른 스크립트가 ACDL이 로드되기 전에window.adobeDataLayer을(를) 배열이 아닌 다른 것으로 설정하면 ACDL이 연결되지 않습니다.- 스크립트가 배열을 대체했습니다.
window.adobeDataLayer = [];과(와) 같은 코드는 데이터 레이어를 새로운 빈 배열로 대체하므로 ACDL 메서드, 계산된 상태 및 모든 리스너가 손실됩니다. 항상window.adobeDataLayer = window.adobeDataLayer || [];을(를) 사용하십시오. 데이터 레이어 배열 만들기를 참조하십시오. - 대기 중인 함수에서 오류가 발생했습니다. ACDL이 로드되기 전에 푸시된 함수에서 오류가 발생하면 콘솔에 오류가 표시되고 해당 함수 후 큐에 있던 항목이 손실됩니다. 푸시한 함수 내에서 오류를 catch합니다.
수신기가 실행되지 않습니다. listener-not-called
다음을 확인하십시오.
- 이벤트 이름이 일치하지 않습니다. 이벤트 이름은 대소문자를 구분하며 공백을 포함하여 정확히 일치해야 합니다.
- 이벤트를 푸시한 후에 수신기가 추가되었으며 수신기가
future범위를 사용합니다. 기본all범위를 사용합니다. 범위를 참조하세요. - 수신기를 추가하기 전에 기록이 지워졌으므로 재생할 내용이 없습니다. 내역 지우기를 참조하십시오.
path옵션은 푸시를 필터링합니다. 경로가 있는 리스너는 해당 경로를 포함하는 푸시에 대해서만 실행됩니다. 경로을(를) 참조하세요.- 수신기가 추가되지 않았습니다. listener 인수가 함수가 아니거나 범위가 유효하지 않으면 ACDL이 수신기를 추가하지 않습니다. 대신
on및handler등의 키가adobeDataLayer.getState()에 나타납니다. - 이벤트에 대해 동일한 함수가 이미 등록되었습니다. ACDL은 다른 옵션이 있더라도 두 번째 등록을 무시합니다.
- 이전 수신기에서 동일한 푸시에 대해 오류을(를) throw하여 나머지 수신기를 중지합니다. 콘솔에서 오류를 확인합니다.
- 푸시가 이벤트가 아닙니다.
event값이 없거나 비어 있거나 문자열이 아닌 개체는 데이터로 처리됩니다. 이벤트 수신기가 아니라adobeDataLayer:change개의 수신기를 트리거합니다.
리스너가 예상보다 자주 실행됩니다. listener-called-too-often
- 이전 이벤트를 재생합니다. 기본
all범위를 사용하면 기록에 이미 있는 일치하는 이벤트에 대해 새 수신기가 실행됩니다. 이 동작은 예상되었습니다. 이전 이벤트가 이미 처리된 경우future범위를 사용하십시오. - 두 번 이상 추가되었습니다. 반복적으로 실행되고 매번 새로운 익명 함수를 전달하는 코드는 매번 새로운 리스너를 추가합니다. 명명된 함수를 사용합니다. 명명된 함수 사용을 참조하세요.
- 경로를 사용합니다. 경로가 있는 리스너는 값이 변경되지 않았더라도 경로를 포함하는 모든 푸시에 대해 실행됩니다.
계산된 상태에서 데이터가 누락되었거나 잘못되었습니다. state-issues
- 값이
event또는eventInfo(으)로 푸시되었습니다. 이 키는 계산된 상태로 저장되지 않습니다. 다른 키 아래에 데이터를 푸시합니다. - 배열 손실된 항목입니다. 배열을 푸시하면 전체 배열이 바뀝니다. 전체 배열을 푸시합니다. 배열을 참조하세요.
- 개체가 문자열, 숫자 또는 부울을 바꾸지 않았습니다. 먼저
null을(를) 푸시하여 키를 삭제한 다음 개체를 푸시합니다. 값의 형식 변경을 참조하십시오. - 날짜 또는 함수가 빈 개체가 되었습니다. 날짜를 문자열 또는 숫자로 저장합니다. 값 형식을 참조하세요.
- 결과
getState()에 대한 변경 내용이 적용되지 않았습니다.getState()이(가) 복사본을 반환합니다. 대신 변경 사항을 푸시합니다. - 경로가 있는
getState()이(가)undefined을(를) 반환합니다. 경로에 있는 모든 키의 철자를 확인합니다. 대괄호가 아닌 배열 인덱스(예:items.0.sku)에 점을 사용합니다. 경로에서 값 가져오기를 참조하십시오.
항목들이 내역에서 누락되었습니다. history-issues
- 함수 및 잘못된 항목은 보관되지 않습니다. 데이터 개체와 이벤트 개체만 유지됩니다. ACDL 로드 후: 기록을 참조하십시오.
- 수신기에서 오류가 발생했습니다. 리스너에서 오류가 발생하면 트리거된 항목이 계산된 상태를 업데이트하지만 기록에 추가되지 않습니다.
- 한
push()호출에 여러 종류의 항목이 포함되어 있습니다. 각 항목을 별도의 호출로 푸시합니다. 호출당 항목 한 개 푸시를 참조하십시오. - 기록이 지워졌습니다. 예를 들어 태그 확장의 데이터 레이어 기록 지우기 작업에 의해 지워졌습니다.
recommendation-more-help
experience-platform-help-collection