새 기초 프로젝트를 열 때 "Uncaught TypeError : a.indexOf is a function"오류


250

을 사용하여 bash를 통해 새로운 Foundation 5 프로젝트를 만들었습니다 foundation new my-project. Chrome에서 index.html 파일을 열면에서 Uncaught TypeError: a.indexOf is not a function오류가 콘솔에 표시됩니다 jquery.min.js:4.

기초 사이트의 단계에 따라 프로젝트를 만들었지만이 오류를 제거 할 수없는 것 같습니다. Foundation 및 jQuery는 index.html 파일에 포함되어 올바르게 연결된 것처럼 보이고 연결된 app.js 파일에는 다음이 포함됩니다.$(document).foundation();

누구 든지이 오류의 원인을 알고 있습니까? 그리고 어떤 해결책이 될 수 있습니까?

콘솔 오류 메시지 스크린 샷

답변:


819

이 오류는 같은 jQuery를 이벤트 - 별명에 의해 발생할 수 있습니다 .load(), .unload()또는 .error()모든이되어 사용되지 jQuery를 1.8부터 . 코드에서 이러한 별칭을 찾아 .on()대신 메소드로 대체하십시오. 예를 들어, 더 이상 사용되지 않는 다음 발췌문을 바꾸십시오.

$(window).load(function(){...});

다음과 같이 :

$(window).on('load', function(){ ...});

3
2.2.1 @User에는 없었지만 3.3.1로 전환 하자마자이 변경을해야했습니다.
Codemonkey

@DanielLlano 당신은 내 하루를 저장
Owaiz Yusufi

1
이것은 나를 위해 그것을 고쳤다.
브라운 Radagast

@Crine $(function() {});은 문서 준비를위한 것이며 창로드 이벤트와 동일하지 않습니다. 또한 doc ready는 종종 창을로드하기 전에 시작됩니다.
Robert

안녕하세요, 왜 그런지 말씀해 주시겠습니까? 이 버전 1.12.3으로 일하고 그리고 내가 3.4.1로 마이그레이션 할 때 작동을 중지하기 전에
아르 마르케스 Sobrinho

35

이 오류는 종종 호환되지 않는 jQuery 버전으로 인해 발생합니다 . foundation 6저장소 와 동일한 오류가 발생했습니다 . 내 저장소는을 사용 jQuery 3했지만 Foundation에는 이전 버전이 필요합니다. 나는 그것을 바꿨다.

당신이 jQuery를 버전을 보면 의해 필요한 기초 5 개 의존성 은 상태 "jquery": "~2.1.0".

올바른 버전의 jQuery를로드하고 있는지 확인할 수 있습니까?

이게 도움이 되길 바란다.


29

jQuery Migrate Plugin 아래에 추가하십시오

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.4.1.min.js"></script>

문제가 해결되었음을 확인합니다.
Morad Hamdy

17

나는이 문제에 직면했다. 내가 사용 된 jquery.poptrox.min.js이미지 터지는과 확대하고 나는 말했다 오류가 발생했습니다 :

“Uncaught TypeError : a.indexOf is a function” 오류입니다.

이것은 indexOf지원되지 않았기 때문에 3.3.1/jquery.min.js간단한 수정은 이전 버전으로 변경하는 것 2.1.0/jquery.min.js입니다.

이것은 나를 위해 그것을 고쳤다.


2
나는 3.2.1을 2.1.0으로 옮겼다. 이것은 나를 위해 일했습니다.
Siddharth

어서 오십시오 ! @Siddharth
Harshit Pant

1
보안 문제가 발생할 수 있으므로 절대로 버전으로 돌아 가지 마십시오.
Ajay Takur

1
이런 경우 : 아래 코드를 교체 할 수 있습니다 $ (window) .load (function () {...}); 다음과 같이 : $ (window) .on ( 'load', function () {...}); 그것은 또한 작동 할 것입니다! :)
Harshit Pant

13

가능한 이유 중 하나는 다음 과 같이 jQuery TWICE를로드 할 때입니다 .

<script src='..../jquery.js'></script>
....
....
....
....
....
<script src='......./jquery.js'></script>

따라서 소스 코드를 확인하고 중복 jQuery로드를 제거하십시오.


2
jquery 버전을 측면에로드하는 경우 자체 버전을로드하는 워드 프레스로 발생합니다.
Olou

1

사용 jQuery 3.3.1하고 있는데 동일한 오류가 발생했습니다. 제 경우 URL은 Objectvs 문자열이었습니다.

일어난 일은 내가 가져간 것입니다 URL = window.location-객체를 반환했습니다. 일단 그것을 변경 window.location.href하면 e.indexOf오류 없이 작동했습니다 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.