netzmacht/contao-leaflet-maps

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

Opened this issue · 6 comments

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

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

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.

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

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.

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.

@havutcuoglu please post your project's composer.json.