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