Estoy creando una página web normal que requiere que cargue unos cinco archivos CSS y diez archivos Javascript.
- Al cargarlos por separado en la página HTML, mi página web se carga bien.
Ahora para la producción, concatené todo el Javascript en un solo archivo, en el orden necesario, y todo el CSS en otro archivo. Pero cuando intento ejecutar la página web con los archivos concatenados, arroja un error que dice:
Uncaught TypeError: undefined is not a function
En la línea donde se carga jquery.min.js en el archivo Javascript concatenado.
¿Qué puedo hacer para mitigar esto? Quiero concatenar todos los archivos y minimizarlos para la producción. Por favor ayuda.
EDITAR: Fusioné Javascript y CSS en el orden en que estaban cuando se cargaban individualmente y funcionaban bien.
javascript
jquery
minify
ghostCoder
fuente
fuente
undefined
si no tienes un código para mostrar?Respuestas:
Suponiendo que este problema aún no se ha resuelto, muchos archivos individuales no terminan su código con un punto y coma. La mayoría de los scripts de jQuery terminan con
(jQuery)
y debe tener(jQuery);
.Como archivos separados, la secuencia de comandos se cargará bien, pero como un archivo individual, necesita el punto y coma.
fuente
Es posible que deba volver a verificar el orden en el que está fusionando los archivos, debería ser algo como:
fuente
Esta solución funcionó para mí
Mueva su código dentro del cierre y use $ en lugar de jQuery
Encontré la solución anterior en /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
después de buscar demasiado
fuente
Obtuve el mismo error al tener dos referencias a diferentes versiones de jQuery.
En mi página maestra:
Y también en la página:
fuente
Tuve este problema recientemente con el complemento jQuery Validation , usando Squishit , también obteniendo el error js:
Lo arreglé cambiando la referencia al archivo jquery.validate.js no minificado, en lugar de jquery.validate.min.js.
Creo que la versión minimizada de ciertos archivos, cuando se comprime aún más usando Squishit, por ejemplo, en algunos casos podría no lidiar con los puntos y coma que faltan y cosas por el estilo, como sugiere @Dustin, por lo que es posible que tenga que experimentar con qué archivos puede comprimir doblemente, y dejarlo en Squishit o lo que sea que esté comprando.
fuente
Para aquellos que todavía no pudieron solucionar esto, lo hice cambiando mi 'this' a '$ (this)' cuando usaba jQuery.
P.EJ:
Fijo:
fuente
Me encontré con el mismo problema, cuando se nombró por error variable con el mismo nombre, como función.
Así que esto:
falló, generando el mensaje de error mencionado de OP.
Arreglar esto fue tan simple como cambiar la línea anterior a:
No sé, cuánto ayuda en esta situación, pero decidí poner esta respuesta para otros que buscan una solución para problemas similares.
fuente
Sí, también lo arreglé cambiando en las bibliotecas js a unminified.
Por ejemplo, en la etiqueta, cambie:
Por:
Salir del 'min' como no minificado.
Gracias por la idea.
fuente
Recuerde: las funciones de Javascript son SENSIBLES A CASOS.
Tuve un caso en el que estoy bastante seguro de que mi código se ejecutará sin problemas. Pero aún así, recibí un error y verifiqué la consola Javascript de Google Chrome para verificar qué es.
Mi línea de error es
Y recibí el mismo mensaje de error:
Nada parece estar mal con el código anterior, pero no se estaba ejecutando. Soluciono problemas durante casi una hora y luego lo comparo con mi otro código en ejecución. Mi error es que se configuró en
SetAttribute
, que debería sersetAttribute
.fuente
En caso de que haya algún idiota como yo, tuve este problema frustrante porque olvidé un simple
new
palabra clave antes de crear una instancia de un nuevo objeto.
fuente
Acabo de recibir el mismo mensaje con el siguiente código (en IcedCoffeeScript):
Esto me pareció un código ICS normal. Desplegué la construcción await-defer en CoffeeScript normal:
Lo que realmente sucedió fue que traté de pasar 1 función de devolución de llamada (con 2 parámetros) a la función
f
esperando dos parámetros, efectivamente sin configurarcb
adentrof
, que el compilador informó correctamente comoundefined is not a function
.El error ocurrió porque pegué ciegamente el código repetitivo de estilo de devolución de llamada.
f
no necesitaerr
que se le pase un parámetro, por lo que simplemente debería ser:En el caso general, recomendaría volver a verificar las firmas e invocaciones de funciones para detectar aridades coincidentes. La pila de llamadas en el mensaje de error debería poder proporcionar sugerencias útiles.
En su caso especial, recomiendo buscar definiciones de funciones que aparezcan dos veces en el archivo combinado, con diferentes firmas, o asignaciones a variables globales que contengan funciones.
fuente
Asegúrate de haber comentado cualquier comentario. A veces, al copiar y pegar, omitirá el "/ *!"
Además, cuando ingrese a la consola, ellos enumerarán sus errores y debe tomarlos uno por uno. Si ve "Uncaught SyntaxError: Unexpected token *", eso podría significar que está leyendo su archivo js y no pasa de la primera línea.
/ *! * jquery.tools 1.1.2: la biblioteca de IU que falta para la Web * * [tools.tabs-1.0.4, tools.tooltip-1.1.2, tools.scrollable-1.1.2, tools.overlay-1.1.2, tools.expose-1.0.5] * * Copyright (c) 2009 Tero Piirainen * http://flowplayer.org/tools/ * Archivo generado: miércoles 07 de octubre 09:40:16 GMT 2009 * /
fuente
Obtuve esto cuando pasé accidentalmente demasiados parámetros a una función jquery que solo esperaba un parámetro de devolución de llamada.
Para la resolución de problemas de otros: asegúrese de verificar todas las llamadas a la función jquery para ver si hay parámetros adicionales.
fuente