netzmacht / contao-leaflet-maps

Leaflet maps extension for Contao CMS
12 stars 8 forks source link

[TEST-3] Undefined global variable $LEAFLET_LIBRARIES - Weiterhin vorhanden #127

Open havutcuoglu opened 1 year ago

havutcuoglu commented 1 year ago

Hallo,

ich habe die Erweiterung installiert und hatte schon Probleme mit $LEAFLET_LIBRARIES, weil diese nicht definiert sind. Bin in das contao/config.php und hab es provisorisch definiert.

Danach kann man Backend und Frontend normal aufrufen.

Allerdings, sobald man eine Karte definieren möchte, bekommt man im Backend keine Kartenanzeige und viele JS Fehler.

Refused to apply style from 'https://.......com/assets/leaflet/libs/leaflet/leaflet.min.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

 GET https://.......com/assets/leaflet/libs/leaflet/leaflet.js net::ERR_ABORTED 404 (Not Found)

Refused to apply style from 'https://........com/assets/leaflet/libs/control-geocoder/Control.Geocoder.min.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Refused to execute script from 'https://........com/assets/leaflet/libs/leaflet/leaflet.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

GET https://........com/assets/leaflet/libs/control-geocoder/Control.Geocoder.min.js net::ERR_ABORTED 404 (Not Found)

Refused to execute script from 'https://........com/assets/leaflet/libs/control-geocoder/Control.Geocoder.min.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

Uncaught ReferenceError: L is not defined
    at contao?act=edit&do=leaflet_map&id=1&ref=39FuuOUT&rt=e702d6ea1e55aaa6f36.Ur71neXth1x9C_U9xP_81Gflm1J9gy_w7fz6_ObujN8.YP-W8reyzmwzP8BUirONuD7W3zwW9VWxj7uUrZbawr4azqfQh4nqcRkzvA:288:15

Auch in Frontend taucht der Fehler caught ReferenceError: L is not defined Fix hier löst das Problem nicht.

Contao Version: 4.13.21 Map Version 3.2.4

llm-frontend llm-backend

havutcuoglu commented 1 year ago

Ich habe die Erweiterung komplett entfernt und versucht erneut zu installieren. Dabei kam wieder derselbe Fehler. Siehe Screenshot. Undefined global variable $LEAFLET_LIBRARIES und das führt dazu, dass Frontend und Backend nicht funktioniert. console

havutcuoglu commented 1 year ago

Für diejenigen, die ebenfalls auf dasselbe Problem stoßen.

Die Erweiterung kann einfach die libs nicht unter assets generieren. Jede Abhängigkeit ist auch irgendwie anders aufgebaut. Nachdem ich mit meinen Reparaturversuchen gescheitert bin, habe ich die Einträge aus der contao-leaflet-libraries/module/config/config.php in die globale config.php kopiert und die assets von Hand in assets/leaflet/libs kopiert, damit die Erweiterung überhaupt funktioniert.

Ist zwar nicht Update sicher, aber da ich eilig habe und nicht warten kann, ist es momentan die beste und einfachste Lösung.

igi-1w3r53n commented 1 year ago

Das Problem durfte ich auch schon kennenlernen. Mit den bekannten Hacks habe ich es geschafft das Modul zu installieren (Contao 4.13.24 + Leaflet 3.2.4) und nachdem ich die libs manuell kopiert habe, wurde mir zumindest im Backend die Karte korrekt dargestellt.

Im Frontend ist es aber noch das selbe: "Uncaught ReferenceError: L is not defined". Lt. Stackoverflow soll es an der Reihenfolge liegen, wie die CSS/JS Dateien eingebunden werden. Ich bin aber gerade noch zu blöd um herauszufinden, wie ich das korrigiere.

Gibt es da noch Ideen / Lösungsansätze? Ich bin auch absolut offen für dreckige Workarounds (muss es zumindest in meiner lokalen DEV Umgebung zum laufen bekommen).

taleteller commented 1 year ago

Die Karte lädt nicht im Frontend weil die nötigen JS/CSS Dateien nicht geladen werden. Ich habe die folgenden Globals in der system/config/localconfig.php eingetragen:

$GLOBALS['TL_JAVASCRIPT'][] = 'assets/leaflet/libs/leaflet/leaflet.js|static';
$GLOBALS['TL_JAVASCRIPT'][] = 'assets/leaflet/libs/leaflet-omnivore/leaflet-omnivore.min.js|static';
$GLOBALS['TL_JAVASCRIPT'][] = 'assets/leaflet/libs/leaflet-providers/leaflet-providers.min.js|static';
$GLOBALS['TL_CSS'][] = 'assets/leaflet/libs/leaflet/leaflet.css';

Kann sein das dass nicht alle sind, aber für mich lädt die Karte im Frontend mit Layern aus "Vorkonfigurierter Karte", Markern und Popups.

havutcuoglu commented 12 months ago

Damit es für jeden verständlich ist.

Fehler: PHP Warning: Undefined global variable $LEAFLET_LIBRARIES in /var/www/vhosts/..../domain.com/vendor/netzmacht/contao-leaflet-maps/src/Frontend/Assets/LibrariesConfiguration.php on line 54 12:47:05 CRITICAL [console] Error thrown while running command "cache:warmup". Message: "ArrayIterator::__construct(): Argument #1 ($array) must be of type array, null given" ["exception" => TypeError { …},"command" => "cache:warmup","message" => "ArrayIterator::__construct(): Argument #1 ($array) must be of type array, null given"]

Lösung:

  1. contao-leaflet-libraries/module/config/config.php in root Verzeichnis contao/config/config.php übertragen. Eventuell muss diese Ordnerstruktur und Datei neu erstellt werden.
  2. Aus der Repository, die libs unter assets/leaflet/libs kopieren. Auch hier kann es sein, dass die Ordnerstruktur neu angelegt werden muss.

Cache leeren und schon funktioniert alles wieder.

Hier muss der Entwickler sich Zeitnehmen und schauen, woran das Problem liegt. Das ist natürlich kein Dauerzustand, aber dieser Workaround funktioniert für mich, bis der Bugfix herauskommt.