견적서를 다루는 JSP에서 다음과 같은 에러가 console창에 발생하였습니다.
$.ajax({}); 로도 변경해보았지만 'mode' 가 없다는 no parameter 에러였습니다.
검색해보니 slim으로 설정된 jquery를 변경하라는 해결법이 제시되어있습니다.
Controller에서 해당 Layout으로 접근하였더니 pdfLayout에서 slim이 상단에 선언되어 있었습니다.
다음을 주석처리한 뒤 정상적으로 실행되었습니다.
min도 공통코드로 선언되었지만, 선언되었던 위치가 앞단이여서 jquery는 slim으로 선언되었다고 판단됩니다.
왜 이러한 차이를 보이는지 알아보았습니다.
<script src="https://code.jquery.com/jquery-3.5.1.slim.js">
slim패키지는 min과 다르게 제거된 기능이 있습니다.
jQuey.fn.extend
jquery.fn.load
jquery.each // 일반적인 AJAX 이벤트 처리를 위한 대다수의 함수를 첨부
jQuery.ajaxSettings.xhr, .... ajax와 관련된 세팅 설정
jQuery.parseXML - XML 구문 분석
jQuery.easing, jQuery.Animation, jQuery.speed - 애니메이션 효과
이러한 구성요소를 제외한 것에 대한 발표는 다음과 같습니다.
: jQuery 라이브러리의 이러한 구성 요소를 제외하는 이유는 Angular 또는 React와 같은 다른 JS 프레임 워크와 함께 사용되는 jQuery의 점점 더 일반적인 시나리오를 인식하고 있다고 생각합니다.
이 경우 jQuery의 사용법은 주로 DOM 탐색 및 조작에 사용되므로, 더 이상 사용되지 않거나 프레임 워크에서 제공하는 구성 요소를 제외하면 파일 크기가 약 20% 줄어듭니다.
때로는 아약스가 필요하지 않는 패키지 사용하는 것을 선호하는 부류로 인해 해당 모듈들을 제외하는 "슬림"버전이 출시되었다.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js">
기본적인 아약스(Ajax)나 다른 모듈들이 포함되어있는 기능을 가진 패키지이다.
해당 에러를 발견하는데 시간이 좀 걸렸습니다.
slim이 설마.. 적용되고 있었을지는 몰랐지만, 다수의 에러를 해결하다보니 접근하는 법은 간단했습니다.
JSP인데 상태값이 500이면 서버통신에러, console에 나타나는게 패키지인 것 같다?
그럼 해당 패키지로 어떤 것들을 가져오는지 살펴볼 필요가 있겠죠..!
저의 프로젝트에선 공통 layout을 이용하여 라이브러리 및 패키지를 관리하는데 앞단에 slim이 선언되어있었습니다...!
앞으론 좀 더 주의해보아야겠죠? :)