약 5 개의 CSS 파일과 10 개의 Javascript 파일을로드해야하는 일반 웹 페이지를 만들고 있습니다.
- HTML 페이지에서 별도로로드하면 내 웹 페이지가 제대로로드됩니다.
-
이제 프로덕션을 위해 필요한 순서대로 모든 자바 스크립트를 단일 파일에 연결하고 모든 CSS를 다른 파일에 연결했습니다. 그러나 연결된 파일로 웹 페이지를 실행하려고하면 다음과 같은 오류가 발생합니다.
Uncaught TypeError: undefined is not a function
연결된 Javascript 파일에서 jquery.min.js가로드되는 줄.
이 문제를 완화하려면 어떻게해야합니까? 모든 파일을 연결하고 프로덕션을 위해 축소하고 싶습니다. 도와주세요.
편집 : Javascript와 CSS를 개별적으로로드되고 정상적으로 작동했을 때 순서대로 병합했습니다.
답변
이 문제가 여전히 해결되지 않았다고 가정하면 많은 개별 파일이 세미콜론으로 코드를 끝내지 않습니다. 대부분의 jQuery를 스크립트로 끝나는 (jQuery)
당신은 있어야합니다 (jQuery);
.
별도의 파일로 스크립트는 잘로드되지만 하나의 개별 파일로 세미콜론이 필요합니다.
답변
파일을 병합하는 순서를 다시 확인해야 할 수 있습니다. 다음과 같은 형식이어야합니다.
- jquery.min.js
- jquery-ui.js
- 로드하는 타사 플러그인
- 사용자 정의 JS
답변
이 솔루션은 저에게 효과적이었습니다.
; (함수 ($) { // 코드 }) (jQuery);
클로저 내부로 코드를 이동하고 jQuery 대신 $ 사용
위의 솔루션을 /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma 에서 찾았습니다.
너무 많이 설교 한 후
답변
다른 버전의 jQuery에 대한 두 개의 참조를 갖는 것과 동일한 오류가 발생했습니다.
내 마스터 페이지에서 :
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
또한 페이지에서 :
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>
답변
최근에 Squishit을 사용하여 jQuery Validation 플러그인 에이 문제 가 발생하여 js 오류가 발생했습니다.
“정의되지 않은 것은 함수가 아닙니다.”
jquery.validate.min.js가 아닌 축소되지 않은 jquery.validate.js 파일에 대한 참조를 변경하여 수정했습니다 .
@MvcHtmlString.Create(
@SquishIt.Framework.Bundle.JavaScript()
.Add("~/Scripts/Libraries/jquery-1.8.2.min.js")
.Add("~/Scripts/Libraries/jquery-ui-1.9.1.custom.min.js")
.Add("~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js")
.Add("~/Scripts/Libraries/jquery.validate.js")
.Add("~/Scripts/Libraries/jquery.validate.unobtrusive.js")
... more files
예를 들어 Squishit을 사용하여 추가로 압축 할 때 특정 파일의 축소 된 버전은 @Dustin이 제안한 것처럼 누락 된 세미콜론 등을 처리하지 못할 수 있으므로 어떤 파일을 사용할 수 있는지 실험해야 할 수 있습니다. 두 배로 압축하고 Squishit 또는 번들로 묶는 모든 것에 맡깁니다.
답변
여전히이 문제를 해결할 수없는 사람들을 위해 jQuery를 사용할 때 ‘this’를 ‘$ (this)’로 변경했습니다.
예 :
$('.icon').click(function() {
this.fadeOut();
});
결정된:
$('.icon').click(function() {
$(this).fadeOut();
});
답변
함수와 같은 이름으로 실수로 변수 이름을 지정했을 때 매우 동일한 문제가 발생했습니다.
그래서 이거:
isLive = isLive(data);
실패, OP의 언급 된 오류 메시지 생성.
이 문제를 수정하는 것은 위의 줄을 다음과 같이 변경하는 것만 큼 간단합니다.
isItALive = isLive(data);
이 상황에서 얼마나 도움이되는지 모르겠지만 비슷한 문제에 대한 해결책을 찾는 다른 사람들에게이 답변을 제공하기로 결정했습니다.