Obteniendo TypeError: $ .widget no es una función de Magento 2

9

Estoy recibiendo un error de tipo JavaScript en Mini carro, página de vista del producto , y Pedido página .

TypeError: $.widget is not a function
           $.widget('mage.priceBox')
           $.widget('mage.dataPost')

¿Como puedo resolver esto?

Nikul
fuente
¿Has ejecutado el comando de despliegue?
Rakesh Jesadiya
Sí, estoy ejecutando el comando de implementación, pero sigo recibiendo un error.
Nikul
primero debe eliminar el contenido de la carpeta pub / static después de ejecutar el comando para la implementación
Rakesh Jesadiya
Hola Rakesh Cualquier comando para eliminar la carpeta pub / static usando el comando.
Nikul
tienes que eliminar manualmente
Rakesh Jesadiya

Respuestas:

8

Tuve el mismo problema al usar Porto Theme. En mi caso, a veces jQuery fue reconocido, a veces no. Desafortunadamente, no entendí la causa, pero encontré una solución.

En resumen: combine todos los archivos javascript.

  1. En Backend ve a:

Stores -> Configuration -> Advanced -> Developer -> JavaScript Settings

  1. Activar:

    • Habilitar agrupación de JavaScript
    • Fusionar archivos JavaScript
    • Minificar archivos JavaScript (opcional)
  2. Irecommendedened desplegar los archivos estáticos

bin/magento setup:static-content:deploy

  1. Borrar caché debajo System -> Cache Management

    • En Additional Cache Managementregión elige el botónFlush CSS/Javascript Cache
    • Y Flush Magento Cacheluego

Ahora borre la caché en el navegador y vuelva a cargar.

Para desarrollar esta solución no es satisfactoria, pero al menos productiva, su uso debe ser una buena solución de trabajo, sin un comportamiento impredecible.

Espero eso ayude..

sagacidad
fuente
eso me ayudó, gracias. Tuve el mismo problema
bourax
Solo hice la descarga de CSS / Javascript y Magento Cache, y funcionó, ¡pero su respuesta puede ayudar en otros casos! En dev env. estamos obligados a dejar las optimizaciones JS deshabilitadas, la depuración se vuelve difícil de lo contrario, y también raramente usamos el comando de implementación, la actualización de la página desencadena esta generación de archivos estáticos. Gracias !
medmek
Creo que esto tiene algo que ver con requirejs-config.js ... a veces map: { '*': {se usa, y a veces paths: {...
Negro
4

También tuve este problema, pero luego me encontré con este artículo: http://www.danjoseph.me/2016/09/16/magento-2-widget-not-function/

En el artículo, explica que jquery se estaba cargando por segunda vez en la página y, por lo tanto, sobrescribe la versión cargada previamente por magento. Para mí fue un script de marketing que también estaba cargando jquery por alguna razón. jQuery solo debe cargarse una vez en la cabeza con esta etiqueta y todos los demás deben eliminarse.

<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="jquery" src="http://seatup.local/pub/static/frontend/Seatup/theme/en_US/jquery.js"></script>

Cypher909
fuente
-4

Vaya a su carpeta de temas y ubique el siguiente archivo en la carpeta Magento_Theme

default_head_blocks.xml

y reemplazar

<script src="jquery.js" />

con

<remove src="jquery.js" />

Asegúrese de limpiar el caché y actualizar la página.

Tuve el mismo problema y lo resolví utilizando el método anterior.

Nausif
fuente
Al hacer esto, está eliminando jQuery. Es cierto que resuelve el error descrito en la pregunta, pero ahora otras cosas están rotas, por ejemplo, relacionadas con bootstrap. Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6
slayerbleast
Eliminar jQuery no es la forma correcta de manejar esto. Es un mal consejo.
Cypher909