Помилка "Uncaught TypeError: a.indexOf не є функцією" під час відкриття нового фундаментального проекту


250

Я створив новий проект Foundation 5 через bash, с foundation new my-project . Коли я відкриваю файл index.html в Chrome, Uncaught TypeError: a.indexOf is not a functionна консолі відображається помилка, що походить від jquery.min.js:4.

Я створив проект, виконуючи кроки на сайті фундаменту, але я не можу позбутися цієї помилки. Фонд та jQuery виглядають так, як вони включені та зв’язані правильно у файлі index.html, а пов'язаний файл app.js включає$(document).foundation();

Хтось знає, що викликає цю помилку? і яке може бути рішення?

Скріншот повідомлення про помилку консолі

Відповіді:


820

Ця помилка може бути викликана псевдонімами події 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
Це зафіксувало це для мене.
— Радагаст Браун

@Crine $(function() {});готовий до документа, що не те саме, що подія завантаження вікна. Також документ, готовий до документа, часто спрацьовує перед завантаженням вікна.
— Роберт

Здрастуй, чоловіче, ти можеш сказати мені чому? до того, як вона працювала з версією 1.12.3, і вона перестала працювати, коли я перейшов на 3.4.1
— Армандо Маркіс Собриньо

35

Ця помилка часто викликана несумісними версіями jQuery. Я зіткнувся з такою ж помилкою із foundation 6сховищем. Моє сховище використовувало jQuery 3, але для фундації потрібна більш рання версія. Потім я це змінив, і це спрацювало.

Якщо ви подивитеся на версію jQuery, яку вимагає фундамент 5 залежностей, яку вона констатує "jquery": "~2.1.0".

Чи можете ви підтвердити, що ви завантажуєте правильну версію jQuery?

Я сподіваюся, що це допомагає.



17

Я також зіткнувся з цим питанням. Я використовував jquery.poptrox.min.jsдля вискокування зображення та збільшення масштабу, і я отримав помилку, яка сказала:

Помилка "Uncaught TypeError: a.indexOf не є функцією" .

Це тому, що indexOfйого не підтримували 3.3.1/jquery.min.jsнастільки просте виправлення, що це - змінити його на стару версію 2.1.0/jquery.min.js.

Це зафіксувало це для мене.


2
Я перейшов на 3.2.1 до 2.1.0 і це спрацювало. Це працювало для мене.
— Сіддхарт

Ласкаво просимо! @Siddharth
— Harshit Pant

1
ніколи не повертайтеся до версій, оскільки це може спричинити переважно проблеми безпеки.
— Аджай Такур

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
Це трапляється з wordpress, завантажуючи власну версію, якщо ви також завантажуєте версію jquery на свою сторону.
— Олоу

1

Я використовую, jQuery 3.3.1і я отримав таку ж помилку, у моєму випадку URL був anObject рядком проти.

Сталося те, що я взяв URL = window.location- який повернув предмет. Як тільки я змінив його window.location.href- він працював без e.indexOfпомилки.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.