Magento2 erhält den Fehler 'Constr ist kein Konstruktor' für ein benutzerdefiniertes Design

7

Ich bin nicht sicher, was dieser Fehler ist und ob er etwas beeinflusst, aber dies kommt in meine Konsole:

layout.js:64 Uncaught TypeError: Constr is not a constructor (layout.js line 64)
PHPDev76
quelle
Ich habe das gleiche Problem. Können Sie hierzu weitere Informationen geben?
Max
Ich habe das gleiche Problem. Haben Sie die Lösung?
55840

Antworten:

13

Für alle, die ebenfalls auf dieses Problem stoßen könnten: Ich hatte das gleiche Problem mit meinen benutzerdefinierten JavaScript-Komponenten. Es stellte sich heraus, dass ein kleiner Tippfehler in meinen JS-Dateien das Problem verursachte. Anstelle von define()ich require()oben verwendet. Zum Abschluss hier ein Boilerplate für eine benutzerdefinierte JavaScript-Komponente:

define([
  'uiComponent'
], function(
  uiComponent
) {
  "use strict";

  /**
   * Return the UI Component
   */
  return uiComponent.extend({
    /**
     * Initialization method
     */
    initialize: function () {
      this._super();
    }
  });
});
Giel Berkers
quelle
Danke, das gleiche hier. Passiert, wenn ich einen Nicht-UI-Komponentencode, der zuvor benötigt wurde, auf eine Komponente portiert habe.
Alex
2

Dies ist ein Fehler im Agreement-Validator JS. ( vendor/magento/js/module-checkout-agreements/view/frontend/web/js/view/agreement-validation.js)

Hier sehen Sie: //return Component.extend({}); Dies sollte nicht kommentiert werden, da es den zweiten Parameter der Feuerfunktion von jquery unterbricht. Ich bin mir nicht sicher, ob etwas anderes kaputt geht, aber das Ergebnis ist dieser Fehler. In einigen Fällen funktioniert die Bestellschaltfläche nicht, wenn die Bedingungen und Vereinbarungen manuell festgelegt werden.

Bis dies von Magento behoben wurde, können Sie eine Überschreibung für diese JS in Ihrem eigenen Themenordner erstellen. Fügen Sie dazu die folgende Datei hinzu:

app/design/frontend/<ThemeNameSpace>/<Theme>/Magento_CheckoutAgreements/web/js/view/agreement-validation.jsund fügen Sie den Inhalt ein vendor/magento/js/module-checkout-agreements/view/frontend/web/js/view/agreement-validation.js. Kommentieren Sie die Rückgabe aus und stellen Sie den statischen Inhalt erneut bereit.

J. Spoelstra
quelle
1
In 2.2.4 ist diese Zeile nicht kommentiert, aber es tritt immer noch ein Fehler auf.
Vaso123
0

Ich habe das gleiche Problem konfrontiert. Die Ursache des Problems Ich habe den gleichen Speicherort der js-Datei angegeben, der bereits in der Core-Datei verwendet wird.

Zum Beispiel habe ich versucht, die Gesamtblöcke der Auftragszusammenfassung mithilfe meiner benutzerdefinierten js-Datei wie folgt neu zu strukturieren:

"components": {
     "block-totals": {
              "component": "Magento_Checkout/js/summary/totals",                          
                  }
             }

Aber an derselben Stelle gibt es bereits eine totals.js in magento-checkout / frontend / web / js / summary / totals.js.

Dann habe ich den Dateinamen wie folgt umbenannt:

"component": "Magento_Checkout/js/summary/showtotals",

Jetzt habe ich keine Fehler !! und meine Auftragsübersicht Summenblock überschrieben.

Seeni
quelle