angular 환경에서 URL 변경시 페이지 정지 발생.
9월 6일 뉴스 페이지가 안된다고 연락이 왔다. 정확히는 안되는 건 아니고 URL 을 변경하여 페이지를 이동하면 2번 이후는 페이지가 먹통이 된다. 하루동안 route 쪽을 확인해본 결과 아예 들어오지를 알았다.
- 이전 버전에서는 정상동작
- route 쪽은 아예 들어오지 않음
- ng-include 코드를 삭제하면 route는 들어옴 → angular 문제인가 → ng-include를 대체할 만한걸 찾아보자 → ng-template 등으로 교체해봤지만 정상작동하지 않는다.
- 뉴스에서만 해당 이슈 발생 → 뉴스는 같은 html 인데 parameter가 달라지는 유일한 페이지이다. → 같은 html이라 이전 거를 가지고 있을려고 하나 → 그럼 라우터까지는 들어와야하는데 먹통이 된거처럼 들어오지 않음
더이상 내 수준에서 해결방법을 찾을 수가 없다고 판단하여 부장님께 도움을 청하였다.
부장님의 에러 찾는 방법
- route-ui.js 살펴본다.
- route-ui.js 에 들어오지 않음을 확인
- 크롬 콘솔창의 디버그를 실행한다.
- 크롬의 소스에서 lib/angular-route.js 쪽에 중단점을 설정하고 실행시킨다.
- 해당 부분에서 angular-route.js가 중단점이 찍히지 않음을 확인
- 브라우저에서도 변화가 안되는 걸 확인
- 코드상에서 어디서 $digest쪽에서 동작이 안되는 걸로 확인, scope를 다 삭제하는 거 같다고 판단
- 컨트롤러를 다 지워보고 실행 시킴 → 이슈 발생, html 다 지워보고 실행 → 이슈 없어짐
- 어떤 html 코드에서 이슈가 발생하는지 하나씩 지워서 찾아냄
- news-body directive 가 있으면 해당이슈 가 발생함을 확인
- newsBody의 소스 확인
angular.element($window).remove(); #해당 코드를 삭제하니 정상동작 - 이전에 페이지를 꺼도 메모리를 계속 보유한다고 하여 추가했던 코드로 $window를 remove하여 scope 삭제하였는데 해당 부분에서 웹 브라우저의 히스토리를 삭제해서 해당 이슈 발생
해당 코드를 삭제하여 수정을 하였다. remove를 꼭 하지 않아도 될 것 같다.
코드를 추가할 때 조금 더 생각을 하고 추가를 해야겠다.
댓글