Errore "Uncaught TypeError: a.indexOf non è una funzione" quando si apre un nuovo progetto di fondazione


250

Con bash ho creato un nuovo progetto Foundation 5 con foundation new my-project. Quando apro il file index.html in Chrome, Uncaught TypeError: a.indexOf is not a functionviene visualizzato un errore nella console, originato in jquery.min.js:4.

Ho creato il progetto seguendo i passaggi sul sito della fondazione, ma non riesco a liberarmi di questo errore. Foundation e jQuery sembrano essere inclusi e collegati correttamente nel file index.html e il file app.js collegato include$(document).foundation();

Qualcuno sa cosa sta causando questo errore? e quale soluzione potrebbe essere?

Schermata del messaggio di errore della console

Risposte:


819

Questo errore potrebbe essere causato da jQuery evento-alias come .load(), .unload()o .error()che tutti sono deprecato dal jQuery 1.8 . Cerca questi alias nel tuo codice e sostituiscili .on()invece con il metodo. Ad esempio, sostituire il seguente estratto deprecato:

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

con il seguente:

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

3
Non l'ho avuto con 2.2.1 @User, ma non appena sono passato a 3.3.1 ho dovuto apportare questa modifica.
Codemonkey,

@DanielLlano mi salvi la giornata
Owaiz Yusufi,

1
Questo mi ha risolto.
Radagast il Brown

@Crine $(function() {});è per il documento pronto, che non è la stessa cosa dell'evento di caricamento della finestra. Inoltre, doc ready si attiva spesso prima del caricamento della finestra.
Robert,

Ciao amico, potresti dirmi perché? prima funzionava con la versione 1.12.3 e ha smesso di funzionare quando sono migrato alla 3.4.1
Armando Marques Sobrinho,

35

Questo errore è spesso causato da versioni jQuery incompatibili . Ho riscontrato lo stesso errore con un foundation 6repository. Il mio repository stava usando jQuery 3, ma la fondazione richiede una versione precedente. L'ho quindi cambiato e ha funzionato.

Se si osserva la versione di jQuery richiesta dalle dipendenze della base 5, essa indica "jquery": "~2.1.0".

Puoi confermare che stai caricando la versione corretta di jQuery?

Spero che aiuti.


29

Aggiungi sotto 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>

Confermo che ciò ha risolto il problema.
Morad Hamdy,

17

Ho affrontato anche questo problema. Stavo usando jquery.poptrox.min.jsper lo scatto di immagini e lo zoom e ho ricevuto un errore che diceva:

Errore "Uncaught TypeError: a.indexOf non è una funzione" .

Questo perché indexOfnon è stato supportato, 3.3.1/jquery.min.jsquindi una semplice soluzione a questo è di cambiarlo in una versione precedente 2.1.0/jquery.min.js.

Questo mi ha risolto.


2
Sono passato dalla 3.2.1 alla 2.1.0 e ha funzionato. Questo ha funzionato per me.
Siddharth,

Benvenuto ! @Siddharth
Harshit Pant,

1
non tornare mai indietro alle versioni in quanto ciò potrebbe comportare gravi problemi di sicurezza.
Ajay Takur

1
In tal caso: è possibile sostituire il codice sottostante $ (window) .load (function () {...}); con il seguente: $ (window) .on ('load', function () {...}); funzionerebbe anche! :)
Harshit Pant

13

Uno dei possibili motivi è quando carichi jQuery DUE VOLTE , come:

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

Quindi, controlla il tuo codice sorgente e rimuovi il carico duplicato di jQuery.


2
Succede con wordpress, caricando la sua versione, se stai caricando anche una versione jquery dalla tua parte.
Olou,

1

Sto usando jQuery 3.3.1e ho ricevuto lo stesso errore, nel mio caso, l'URL era un Objectvs una stringa.

Quello che è successo è che ho preso URL = window.location- che ha restituito un oggetto. Una volta cambiato in window.location.href- ha funzionato senza l' e.indexOferrore.


0

Ho risolto questo problema installando la versione corretta di Jqueryquella richiesta dal mio progettonpm

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.