Laravel Artisan Fehlermeldung: Unable to detect application namespace
Heute bin ich auf einen merkwürdigen Fehler gestoßen. Nachdem ich mit Laravel artisan auf der Konsole aufrufe um ein Model zu erzeugen, bekomme ich die Fehlermeldung exception ‚RuntimeException‘ with message ‚Unable to detect application namespace.‘ in /vendor/laravel/framework/src/Illuminate/Console/AppNamespaceDetectorTrait.php:26.
Mhm ok. Zuerst hatte ich keine Ahnung was denn jetzt hier falsch laufen würde. Also öffne ich die AppNamespaceDetectorTrait.php und schaue in die Methode getAppNamespace(), die die Exception wirft.
Schnell wird mir klar, dass der Application Namespace hier über einen Eintrag in der composer.json gesetzt wird. In der composer.json gibt es den Abschnitt
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
Mit psr-4 App wird der Namespace definiert. app/ ist das Verzeichnis des App Namespaces. Ok, so weit, so gut.
Ich versuche daher den Rückgabewert von $composer = json_decode(file_get_contents(base_path().'/composer.json'), true);
zu ermitteln. Dieser ist null. Ok, also kann hier entweder die composer.json nicht gefunden oder nicht ausgewertet werden.
file_get_contents(base_path().'/composer.json'
gibt mir den richtigen Pfad und die richtige composer.json aus. Also muss es am Inhalt der composer.json liegen. Und siehe da, in der composer.json habe ich am Ende einer Zeile ein überflüssiges Komma gefunden. Dadurch konnte das Json nicht richtig dekodiert werden.
Nach der Korrektur funktioniert auch Artisan wieder richtig. Kleiner Fehler, große Wirkung.