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?


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


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>


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.