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.