Ottenere TypeError: $ .widget non è una funzione Magento 2


9

Ricevo un errore di tipo JavaScript in Minicart, pagina di visualizzazione del prodotto e pagina di pagamento .

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

Come posso risolvere questo?


Hai eseguito il comando deploy?
— Rakesh Jesadiya,

Sì, sto eseguendo il comando deploy ma sto ancora ricevendo un errore.
— Nikul,

devi prima rimuovere il contenuto della cartella pub / static dopo aver eseguito il comando per la distribuzione
— Rakesh Jesadiya,

Ciao Rakesh Qualsiasi comando per rimuovere la cartella pub / static usando il comando.
— Nikul,

devi rimuovere manualmente
— Rakesh Jesadiya,

Risposte:


8

Ho avuto lo stesso problema con il tema Porto. Nel mio caso a volte è stato riconosciuto jQuery, a volte no. Sfortunatamente, non ho capito la causa, ma ho trovato una soluzione.

In breve: unisci tutti i file JavaScript.

  1. In Backend vai a:

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

  1. Attivare:

    • Abilita il raggruppamento JavaScript
    • Unisci file JavaScript
    • Minimizza file JavaScript (facoltativo)
  2. Non consigliato per distribuire i file statici

bin/magento setup:static-content:deploy

  1. Svuota la cache in System -> Cache Management

    • Nella Additional Cache Managementregione scegliere il pulsanteFlush CSS/Javascript Cache
    • E Flush Magento Cachedopo

Ora cancella la cache nel browser e ricarica.

Per lo sviluppo di questa soluzione non è soddisfacente, ma almeno per uso produttivo, dovrebbe essere una buona soluzione di lavoro, senza comportamento imprevedibile.

Spero che sia d'aiuto..


questo mi ha aiutato, grazie. Ho avuto lo stesso problema
— bourax il

Ho scaricato solo CSS / Javascript e Magento Cache e ho funzionato, ma la tua risposta può aiutare altri casi! In dev env. siamo tenuti a lasciare disabilitate le ottimizzazioni JS, altrimenti il ​​debug diventa difficile e inoltre raramente utilizziamo il comando deploy, l'aggiornamento della pagina attiva questa generazione di file statici. Grazie !
— medmek,

Penso che questo abbia qualcosa a che fare con requirejs-config.js ... a volte map: { '*': {viene utilizzato, a volte paths: {...
— Black

4

Ho avuto anche questo problema, ma poi ho incontrato questo articolo: http://www.danjoseph.me/2016/09/16/magento-2-widget-not-function/

Nell'articolo spiega che jquery veniva caricato una seconda volta sulla pagina e quindi sovrascriveva la versione caricata in precedenza da Magento. Per me è stato uno script di marketing che stava caricando jquery per qualche motivo. jQuery dovrebbe essere caricato solo una volta nella testa da questo tag e tutti gli altri dovrebbero essere rimossi.

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


-4

Vai alla cartella del tuo tema e trova il seguente file nella cartella Magento_Theme

default_head_blocks.xml

e sostituisci

<script src="jquery.js" />

con

<remove src="jquery.js" />

Assicurati di pulire la cache e aggiornare la pagina.

Ho avuto lo stesso problema e l'ho risolto usando il metodo sopra.


In questo modo stai rimuovendo jQuery. È vero che risolve l'errore descritto sulla domanda, ma ora altre cose sono rotte, ad esempio legate al bootstrap. Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6
— slayerbleast

Rimuovere jQuery non è il modo corretto di gestirlo. È un cattivo consiglio.
— Cypher909,
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.