TypeError abrufen: $ .widget ist keine Funktion von Magento 2

9

Ich erhalte einen JavaScript- Typfehler in Minicart, Produktansichtseite und Checkout-Seite .

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

Wie kann ich das lösen?

Nikul
quelle
Haben Sie den Befehl deploy ausgeführt?
Rakesh Jesadiya
Ja, ich führe den Befehl deploy aus, erhalte aber immer noch einen Fehler.
Nikul
Sie müssen zuerst den Inhalt des Pubs / statischen Ordners entfernen, nachdem Sie den Befehl für die Bereitstellung
ausführen müssen
Hi Rakesh Jeder Befehl zum Entfernen des pub / static-Ordners mit dem Befehl.
Nikul
Sie müssen manuell entfernen
Rakesh Jesadiya

Antworten:

8

Ich hatte das gleiche Problem mit Porto Theme. In meinem Fall wurde manchmal jQuery erkannt, manchmal nicht. Leider habe ich die Ursache nicht verstanden, aber ich habe eine Lösung gefunden.

Kurzum: Alle Javascript-Dateien zusammenführen.

  1. Im Backend gehen Sie zu:

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

  1. Aktivieren Sie:

    • Aktivieren Sie die JavaScript-Bündelung
    • JavaScript-Dateien zusammenführen
    • JavaScript-Dateien minimieren (optional)
  2. Es wird empfohlen, die statischen Dateien bereitzustellen

bin/magento setup:static-content:deploy

  1. Cache unter löschen System -> Cache Management

    • In der Additional Cache ManagementRegion wählen Sie die SchaltflächeFlush CSS/Javascript Cache
    • Und Flush Magento Cachedanach

Löschen Sie nun den Cache im Browser und laden Sie ihn neu.

Für die Entwicklung dieser Lösung ist nicht zufriedenstellend, aber zumindest für die Produktivität sollte die Verwendung eine gut funktionierende Lösung sein, ohne unvorhersehbares Verhalten.

Ich hoffe es hilft..

Klugheit
quelle
das hat mir geholfen, danke. Ich hatte das gleiche Problem
Bourax
Ich habe nur den CSS / Javascript & Magento Cache geleert und funktioniert, aber Ihre Antwort kann anderen Fällen helfen! In dev env. Wir sind verpflichtet, die JS-Optimierungen deaktiviert zu lassen, das Debuggen wird ansonsten schwierig und verwenden auch selten den Befehl deploy. Die Seitenaktualisierung löst diese statische Dateigenerierung aus. Vielen Dank !
Medmek
Ich denke, das hat etwas mit requirejs-config.js zu tun ... manchmal map: { '*': {wird es verwendet und manchmal paths: {...
Black
4

Ich hatte auch dieses Problem, aber dann bin ich auf diesen Artikel gestoßen : http://www.danjoseph.me/2016/09/16/magento-2-widget-not-function/

In dem Artikel erklärt er, dass jquery ein zweites Mal auf der Seite geladen wurde und daher die zuvor von magento geladene Version überschreibt. Für mich war es ein Marketing-Skript, das aus irgendeinem Grund auch jquery lud. jQuery sollte von diesem Tag nur einmal in den Kopf geladen werden und alle anderen sollten entfernt werden.

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

Gehen Sie zu Ihrem Themenordner und suchen Sie die folgende Datei im Ordner Magento_Theme

default_head_blocks.xml

und ersetzen

<script src="jquery.js" />

mit

<remove src="jquery.js" />

Stellen Sie sicher, dass Sie den Cache bereinigen und die Seite aktualisieren.

Ich hatte das gleiche Problem und habe es mit der obigen Methode gelöst.

Übelkeit
quelle
Dadurch entfernen Sie jQuery. Es ist wahr, dass der in der Frage beschriebene Fehler behoben wird, aber jetzt sind andere Dinge kaputt, zum Beispiel im Zusammenhang mit Bootstrap. Uncaught Error: Bootstrap's JavaScript requires jQuery at bootstrap.min.js:6
Slayerbleast
Das Entfernen von jQuery ist nicht der richtige Weg, um damit umzugehen. Es ist ein schlechter Rat.
Cypher909