Error "TypeError no detectado: a.indexOf no es una función" al abrir un nuevo proyecto básico
Creé un nuevo proyecto Foundation 5 a través de bash, con foundation new my-project
. Cuando abro el archivo index.html en Chrome, Uncaught TypeError: a.indexOf is not a function
se muestra un error en la consola, que se origina en jquery.min.js:4
.
Creé el proyecto siguiendo los pasos del sitio de la fundación, pero parece que no puedo deshacerme de este error. Parece que Foundation y jQuery están incluidos y vinculados correctamente en el archivo index.html, y el archivo app.js vinculado incluye$(document).foundation();
¿Alguien sabe qué está causando este error? ¿Y cuál podría ser la solución?
Este error puede deberse a los alias de eventos de jQuery como .load()
, .unload()
o .error()
a que todos están en desuso desde jQuery 1.8 . Busque estos alias en su código y reemplácelos con el .on()
método. Por ejemplo, reemplace el siguiente extracto obsoleto:
$(window).load(function(){...});
con lo siguiente:
$(window).on('load', function(){ ...});
Agregue a continuación el complemento jQuery Migrate
<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>
Este error suele deberse a versiones de jQuery incompatibles . Encontré el mismo error con un foundation 6
repositorio. Mi repositorio estaba usando jQuery 3
, pero la base requiere una versión anterior. Luego lo cambié y funcionó.
Si observa la versión de jQuery requerida por las 5 dependencias básicas , indica "jquery": "~2.1.0"
.
¿Puedes confirmar que estás cargando la versión correcta de jQuery?
Espero que esto ayude.
Yo también enfrenté este problema. Estaba usando jquery.poptrox.min.js
para hacer estallar imágenes y hacer zoom y recibí un error que decía:
Error "Error de tipo no detectado: a.indexOf no es una función" .
Esto se debe a que indexOf
no era compatible, 3.3.1/jquery.min.js
por lo que una solución sencilla es cambiarlo a una versión anterior 2.1.0/jquery.min.js
.
Esto me lo arregló.