webentwicklung-frage-antwort-db.com.de

Heroku: "Für diese App wurde keine Standardsprache erkannt."

Ich lerne NodeJS und der Kurs, dem ich folge, hat mehrere Projekte, die nach Abschnitten geordnet sind. Ich habe alle Projekte unter einem Hauptordner, der auch ein git-Repository ist.

Bei jedem dieser Unterordner im Hauptordner handelt es sich um ein Knotenprojekt mit package.json und den zugehörigen Abhängigkeiten in node_modules. Das Problem ist, wenn ich versucht habe, die Knoten-App in einen solchen Ordner (todo-api) zu heroku zu schieben, erhalte ich die folgende Fehlermeldung - 

remote: Compressing source files... done.
remote: Building source:
remote: 
remote:  !     No default language could be detected for this app.
remote:                         HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
remote:                         See https://devcenter.heroku.com/articles/buildpacks
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !       Push rejected to agile-forest-32749.
remote: 
To https://git.heroku.com/agile-forest-32749.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to Push some refs to 'https://git.heroku.com/agile-forest-32749.git'

Dies ist die Verzeichnisstruktur für das Projekt - 

 enter image description here

Ich entschied mich dafür, den todo-api-Unterordner von selbst in ein neues Projekt umzuwandeln, und diesmal funktioniert Push to Heroku gut - 

 enter image description here

Ich verstehe nicht, warum ich die Fehlermeldung "keine Standardsprache" bekomme, insbesondere wenn die Knoten-App an beiden Stellen genau gleich ist. Irgendwelche Gedanken?

5
Manish Giri

Heroku verfügt über eine Reihe von Standard-Buildpacks, die verwendet werden, wenn die Sprache Ihrer App ermittelt werden muss.
Dazu führt es den Befehl bin/detect jedes dieser Standard-Buildpacks aus, bis einer von ihnen einen Exitcode 0 zurückgibt.

Dies ist der Befehl für den Knoten buildpack .
Wie Sie sehen können, muss sich ein package.json im Stammverzeichnis Ihrer App befinden, nicht in einem Unterordner.

Dies ist der Unterschied, der dazu führt, dass Ihr Build fehlschlägt. Sie müssen Ihre App im Stammverzeichnis Ihres Git-Repositorys ablegen.

2
Damien MATHIEU

In meinem Fall hatte ich Heroku nicht im Root-Ordner eingerichtet, da mein GitHub-Repository in die Ordner frontend/ und backend/ aufgeteilt war. Jeder von ihnen hatte einen package.json. Da Heroku die Datei package.json im Stammordner des Repositorys benötigt, kann die Sprache nicht erkannt werden. 

In meinem Fall musste ich ein sekundäres GitHub-Repository im Ordner backend/ initialisieren. Nachdem das Backend-Projekt als separates Projekt auf GitHub übertragen wurde, arbeitete git Push heroku master.

1
Robin Wieruch