ich habe akuell den Fall, dass ein Plugin nicht aktiviert werden kann. Die Installation erfolgt. Möchte man es dann aktivieren, erhält man einen 500 Fehler.
Im Netzwerk-Tab habe ich herauslesen können, dass es zu einem 500 Fehler bei JSON decode kommt mit der Info: Recursion detected
Aufgefallen ab Version 6.1.4
Der activateContext in der Bootstrap des betreffenden Plugins ist leer:
public function activate(ActivateContext $context): void
{
}
Ein nochmaliges Importieren der variables.scss in der component/beispiel.scss löst das Problem des Aktivierens und der Kompiler läuft durch. Hat Shopware hier nun ein Problem beim Kompiler? Einen Fehler in der Struktur sehe ich hier nicht - und bisher hat es auch funktioniert. Und ich kann es auch nicht immer reproduzieren.
Die Fehlermeldung Recursion detected aus der Produktivumgebung geht allerdings völlig an dem eigentlichen Fehler vorbei…
Ich glaube es gibt aktuell einen Issue beim Compiler wenn zwei Plugins die gleichen Namen für ihre SCSS Variablen benutzen. Vielleicht ist das der Fall?
die Variable ist einzigartig. Sie hat das Hersteller-Prefix und kommt auch in keinem anderen unserer Plugins vor…
Ich kann es leider auch nicht zuverlässig reproduzieren.
In meiner Entwicklungsumgebung mit eurem Vagrant-Setting auf Mac OS (vom 06.04: v6.1.9 Stable Version 999999.9999999) funktioniert es.
In meiner Entwicklungsumgebung mit eurem Vagrant-Setting auf Windows 10 (vom 06.04: v9999999 Developer Version) funktioniert es nicht.
Bei zwei Kunden aktuell ebenfalls nicht.
In meinen Demoshops wiederum kein Problem.
Kann es sein, dass je nach Server-Konfiguration ein unterschiedlicher Compiler genutzt wird? Je nachdem wie man kompiliert kam es in der Vergangenheit ja immer wieder zu Problemen mit Variablen…
Ich habe die Ursache finden können , aber nicht, warum es nur bei manchen Konstellationen auftritt. Ich habe dazu ein Demoplugin erzeugt (siehe unten).
Je nach Konstellation/Installation/System wird die base.scss zum Kompilieren verwendet oder auch nicht.
Erläuterung:
In der base.scss ist die Reihenfolge der zu ladenden @import-Dateien vorgegeben. In Systemen, welche die base.scss verwenden kann das Plugin installiert werden.
In einer anderen Konstellation/Installation/System wird aber die base.scss ignoriert (?!) und die Dateien zum Kompilieren (von Webpack?) beim Aktivieren einfach irgendwie eingelesen. Also beispielsweise die component/component.scss bevor die abstract/variables.scss eingelesen wurde. Damit sind die Variablen dann unbekannt und das Plugin kann nicht aktiviert werden.
Herausgefunden habe ich das, als ich mit dem Demoplugin herumgespielt habe und den @import-Befehel der component/component.scss aus der base.scss entfernt habe, aber die Datei im Plugin belassen habe. Dann habe ich versucht das Plugin in dem Konstellation/Installation/System zu aktivieren. Die Datei wurde dennoch beim Kompilieren verwendet und die Verwendung der Variable in dieser Datei bemängelt.
Ergebnis:
Aus mir unverfindlichen Gründen wird in machen Systemen mit gleicher Shopware Version die base.scss nicht verwendet und die scss-Dateien beim Kompilieren eigenständig gezogen. Dabei kommt es dann beim Aktivieren zu dem Fehler, dass definierte Variablen unbekannt sind.
Ich habe aktuell das gleiche problem mit einem Custom Plugin. Die Struktur ist richtig angelegt, in der lokalen Umgebung funktioniert das theme:compile perfekt. Auf dem Staging-Server plötzlich nicht. Er moniert, dass ihm eine Variable fehlt.
Leider nein. Das Ticket Shopware Issuetracker ist zwar bereits eingeplant, aber noch keiner Version zugewiesen.
Gerade wieder einen Kunden im Ticket, der das Problem hat.