Ошибка «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.

Я создал проект, следуя инструкциям на базовом сайте, но не могу избавиться от этой ошибки. Foundation и 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 ты спасешь мой день
Оваиз Юсуфи

1
Это исправило это для меня.
Радагаст Браун

@Crine $(function() {});для готового документа, что не то же самое, что событие загрузки окна. Кроме того, готовый документ часто срабатывает перед загрузкой окна.
Роберт

Привет человек, не могли бы вы сказать мне, почему? до того, как он работал с версией 1.12.3 и перестал работать, когда я перешел на 3.4.1
Armando Marques

35

Эта ошибка часто вызывается несовместимыми версиями jQuery. Я столкнулся с той же ошибкой с foundation 6хранилищем. Мой репозиторий использовался jQuery 3, но фонд требует более ранней версии. Затем я изменил это, и это сработало.

Если вы посмотрите на версию jQuery, которая требуется для зависимостей Foundation 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 ДВАЖДЫ , например:

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

Итак, проверьте ваш исходный код и удалите дублирующую загрузку jQuery.


2
Это происходит с WordPress, загружая свою собственную версию, если вы также загружаете версию JQuery на вашей стороне.
Olou

1

Я использую, jQuery 3.3.1и я получил ту же ошибку, в моем случае URL был Objectстрокой.

Произошло то, что я взял URL = window.location- что вернул предмет. Как только я изменил это window.location.href- это работало без e.indexOfошибки.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.