위젯 문제 해결 가이드
다음 도구를 사용하여 사용자 지정 서비스 포털 위젯에서 예기치 않은 동작을 조사하고 해결합니다.
- 복잡성 감소
- 문제 해결 중인 위젯과 관련 없는 위젯을 비활성화하여 오류나 예기치 않은 동작을 유발할 수 있는 페이지 부분을 격리합니다. 위젯 기록에서 활성 필드를 False로 설정하여 페이지에서 위젯을 숨기고 관련 스크립트가 실행되지 못하게 합니다.
- 브라우저 개발자 콘솔 사용
지원되는 모든 데스크톱 브라우저에는 개발자 도구가 내장되어 있습니다. 브라우저 개발자 도구에 액세스하여 클라이언트 측 JavaScript에서 발생한 콘솔 메시지와 오류를 확인합니다. 아래에 자세히 설명된 많은 로깅 도구는 이 콘솔에 정보를 출력합니다.
성능 문제가 발생하는 경우 JavaScript 콘솔에서 오류, 많은 수의 HTTP 요청 또는 해결하는 데 시간이 오래 걸리는 HTTP 요청이 있는지 확인합니다. 콘솔을 사용하여 로드 속도가 느린 위젯을 식별할 수 있습니다. 자세한 내용은 Now Support 지식베이스의 [KB0744521] 페이지에서 느린 위젯을 식별하는 방법 문서를 참조하십시오.
- 성능 문제의 원인 확인
다음 팁은 포털에서 성능 문제의 원인을 확인하는 데 도움이 될 수 있습니다.
- 두 인터페이스의 기능을 비교하여 문제가 포털과 관련이 있는지 아니면 플랫폼 전체와 관련이 있는지 확인합니다. 플랫폼 성능 문제에 대한 자세한 내용은 플랫폼 성능을 참조하세요.
- 문제가 전체 포털 또는 특정 페이지에 영향을 미치는지 확인합니다. 포털의 모든 페이지가 느린 경우 헤더 메뉴의 스크립팅된 메뉴 항목 또는 큰 글꼴 또는 이미지 파일이 있는 테마가 원인일 수 있는지 확인합니다. 특정 페이지가 느린 경우 브라우저 개발자 콘솔을 사용하여 어떤 위젯이 원인이 될 수 있는지 판별하십시오.
- 로그 [syslog] 테이블에서 속도 저하를 유발하는 큰 JSON 객체와 관련된 경고를 확인합니다. 속도 저하를 유발하는 작업과 함께 이러한 경고가 나타나면 위젯이 너무 많은 데이터를 사용하고 있음을 나타냅니다.
자세한 내용은 Now Support 지식베이스에서 Service Portal의 6가지 일반적인 성능 함정 및 이를 방지하는 방법[KB0634588] 문서를 참조하십시오.
- 위젯 컨텍스트 메뉴를 사용하여 정보와 옵션에 액세스
- 위젯의 구성 옵션에 액세스하려면 위젯을 Ctrl+마우스 오른쪽 버튼으로 클릭하십시오 . 범위 및 범위 데이터 개체를 브라우저 콘솔에 출력하는 옵션도 있습니다. 이 메뉴에 대한 자세한 내용은 을 참조하십시오 포털 위젯 사용.
- 스크립트 메서드를 사용하여 디버깅 출력 캡처Use script methods to capture debugging output 스크립트 메서드 캡처
서버 및 클라이언트 쪽 코드 내에서 디버깅 정보를 출력하는 데 사용할 수 있는 몇 가지 방법이 있습니다.
표 1. 스크립팅된 디버깅 방법 방법 가용성 설명 console.log() 서버 및 클라이언트 브라우저 개발자 콘솔에 출력을 기록합니다. $sp.log() 서버 로그인한 사용자에게 sp_admin또는관리자역할이 있는 경우 서비스 포털 로그 항목 [sp_log] 테이블에 출력을 기록합니다.gs.log() 서버 로그 [syslog] 테이블에 출력을 기록합니다. 주:gs.log syslog 테이블에 기록을 생성합니다. 과도하게 사용하면 성능이 저하될 수 있습니다.gs.warn() 서버 로그 [syslog] 테이블에 경고 수준 출력을 생성합니다. gs.error() 서버 로그 [syslog] 테이블에 오류 수준 출력을 생성합니다. gs.addInfoMessage()를 호출합니다. 서버 브라우저 창 상단에 녹색 정보 메시지를 표시합니다. gs.addErrorMessage()를 호출합니다. 서버 브라우저 창 상단에 빨간색 오류 메시지를 표시합니다. spUtil.addErrorMessage()를 사용합니다. 클라이언트 브라우저 창 내에 오류 메시지를 표시합니다. spUtil.addInfoMessage()를 호출합니다. 클라이언트 브라우저 창 내에 정보 메시지를 표시합니다. spUtil.addTrivialMessage()를 호출합니다. 클라이언트 잠시 후 자동으로 사라지는 메시지를 표시합니다. 디버거 클라이언트 Chrome 및 Firefox 브라우저에 중단점을 설정하여 브라우저 개발자 콘솔에서 스크립트를 한 줄씩 단계별로 실행할 수 있습니다. {{데이터|json}} HTML 이 코드를 페이지의 HTML 코드에 추가하여 데이터 개체를 JSON 형식으로 포털 페이지에 출력할 수 있습니다. - 보안 제한 사항 확인
위젯 표시 문제는 위젯 스크립트가 아닌 접근 규칙이나 사용자 기준 때문에 발생하는 경우가 많습니다. 기록에 대한 사용자 기준을 확인하고 위젯 내에서 액세스할 수 없는 기록이 플랫폼 UI를 사용하여 액세스할 수 있는지 확인합니다. ACL 디버거를 사용하여 사용자가 위젯에서 사용하는 기록에 대한 예상 액세스 권한을 갖도록 하십시오. 디버거에 대한 자세한 내용은 ACL 디버깅 도구를 참조하세요.
서비스 카탈로그 에 표시되지 서비스 포털않도록 항목을 제한할 수도 있습니다. 위젯에 대해 You are either not authorized(권한이 없거나 기록이 유효하지 않음 ) 서비스 카탈로그 오류 메시지가 표시되면 항목이 에서 숨겨져 있지 않은지 서비스 포털확인하십시오.
- 연결된 Angular 제공자 확인
- 필요한 Angular 제공자가 위젯과 연결되어 있는지 확인합니다. 기본 시스템 위젯과 연결된 기본 Angular 제공자를 제거하면 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 SC 카탈로그 항목 위젯에서 scToggleData 또는 scBindHtmlCompile Angular 제공자를 제거합니다.
- 콘솔에서 widgets 범위에 대한 참조 만들기
- 위젯에 대한 참조를 사용하여 범위 데이터를 조작하거나 위젯 클라이언트 및 서버 스크립트를 수동으로 실행합니다. 다음 단계를 사용하여 참조를 생성합니다.
- 1. 위젯을 마우스 오른쪽 버튼으로 클릭하고 [검사(Inspect)]를 선택합니다.
- 2. 개발 도구 요소 탭에서 widget=
widget속성이 있는 요소를 클릭하여 강조 표시합니다. 현재 검사된 요소 위의 몇 가지 요소를 찾을 수 있습니다. 이 요소는 $0 스크립팅 도구가 위젯을 가리키도록 합니다. - Javascript 콘솔에서 다음 코드를 실행합니다.
var scopeRef = angular.element($0).scope();
AngularJS $apply()를 실행하여 페이지에 변경 사항을 적용해야 합니다.scopeRef.data.prop1 = "Pear"; scopeRef.$apply();아래 구문을 사용하여 참조에서 widgets 클라이언트 컨트롤러에 정의된 함수를 실행합니다.scopeRef.exampleFunction();refresh 명령을 사용하여 widgets 서버 스크립트를 수동으로 실행합니다.
scopeRef.server.refresh();