2016-07-29 25 views
19

Ich habe eine Node.js-Anwendung geklont (die in der Datei package.json angegebene Version 4.1.2 und die meines lokalen Computers 6.2.2) und versucht, auf Heroku zu pushen. Aber es versäumt, diesen Fehler zu bauen und gab:Warum erkennt Heroku Node.js buildpack nicht?

Failed to detect set buildpack https<span>:</span>//codon-buildpacks.s3.amazonaws&period;com/buildpacks/heroku/nodejs.tgz 

Jetzt stelle ich die buildpack zu Heroku/NodeJS und ich bekomme diese Meldung:

Buildpack set. Next release on lit-badlands-92088 will use heroku/nodejs. 
Run git push heroku master to create a new release using this buildpack. 

Wenn ich jetzt git push heroku master laufen, ich bin wieder gesagt:

remote: -----> Failed to detect set buildpack https<span>: 
</span>//codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz 

remote: More info: 
https://devcenter.heroku.com/articles/buildpacks#detection-failure 

remote: 
remote: !  Push failed 
remote: Verifying deploy... 
remote: 
remote: !  Push rejected to lit-badlands-92088. 

Was könnten die möglichen Gründe dafür sein, dass das Node.js buildpack nicht erkannt wird, selbst wenn ich es einstelle?

Antwort

25

Das bedeutet, dass eine Datei package.json nicht in das Stammverzeichnis Ihres Git-Projekts eingecheckt wurde. Daher erkennt Heroku, dass es keine Node.js-App ist. Sie können dies vor Ort sehen:

git show master:package.json 

es zu beheben, werden Sie sicher sein wollen, gibt es eine package.json in der Wurzel des Projekts ist (wo es auch ein .git Verzeichnis), und fügen Sie es zu git:

git add package.json 
git commit -m 'track package.json' 

Die Formulierung ('nicht bestanden Satz buildpack erkennen') verbessert werden könnte. Es sollte wahrscheinlich sagen "Node.js App konnte nicht gefunden werden". Wenn das Skript "detect" des Buildpacks ausgeführt wird (https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect), sucht es nach einer package.json-Datei, um zu überprüfen, ob eine Knoten-App zum Erstellen verfügbar ist.

+0

Ich habe das gleiche Problem, und die package.json existiert in meinem Repo. Weißt du, was könnte eine weitere Ursache für diesen Fehler sein? – katie

+1

Also package.json muss in dem Ordner sein, der .git hat? In meinem Root-Verzeichnis habe ich .git und einen Ordner namens node und im Knoten-Ordner habe ich index.js und package.json. – Shree

+1

Liegt das daran, dass sich package.json im Unterverzeichnis und nicht im Stammverzeichnis des Git Repos befindet? Soll ich versuchen, package.json in das Stammverzeichnis zu verschieben? – Shree

3

Ich hatte ähnliches Problem, hier sind die Schritte, die das Problem gelöst.

heroku buildpacks:set heroku/nodejs 
git push heroku master 

Grundsätzlich sind Details in der weiteren Informationen Link -


Diese Situation kann auch auftreten, wenn Sie eine Datei löschen oder umbenennen, die auf die automatische Erfassung Ihrer Anwendungsart zuvor geführt und damit die automatische Einstellung des erkannten Buildpacks in Ihrer Anwendung


+0

Funktioniert immer noch nicht, irgendetwas anderes, was ich tun kann? – swateek

7

Das liegt daran, dass Heroku denkt, dass Sie eine Node-App bereitstellen. Aber was Sie bereitstellen, ist das public Verzeichnis einer Knoten-App, nicht Node-Code.

Heroku verwendet Buildpacks, um auszuwählen, wie mit dem ap verfahren wird. Sie wollen, dass der Knoten Zuordnung löschen:

buildpacks:clear # clear all buildpacks set on the app

was bedeutet, dass „Next Release normalerweise erkennen buildpack wird.“, Dass es für Sie lösen sollte.

ref: https://devcenter.heroku.com/articles/buildpacks

+0

'heroku buildpacks: clear' hat mein Problem behoben. Vielen Dank. – eabates

1

Einige kleine Erläuterungen zu anderen Antworten: Der Fehler "Fehler gesetzt https zu erkennen buildpack: //codon-buildpacks.s3.amazonaws. com/buildpacks/Heroku/nodejs.tgz" oder nichts Ähnliches bedeutet, dass das GIT COMMIT, das Sie versuchen, nach Heroku zu schieben, nicht als node.js App erkannt wurde. (Beachten Sie die Großbuchstaben für Feinheiten).

Ich habe vor kurzem einen dummen Fehler gemacht, der mich darauf aufmerksam gemacht hat: Ausführen von "ls -a" zeigte, dass meine package.json und .git Dateien im selben Stammverzeichnis waren, wie von Heroku gefordert. AUSSER dass die package.json Datei NICHT in meinem letzten Git Commit enthalten war. Das Ausführen von "git status" hat mich darauf hingewiesen, dass package.json eine nicht aufgezeichnete Datei ist. Also habe ich es hinzugefügt, und ta-da, schiebend zu heroku hat gearbeitet.

Wenn Sie einen Fehler im Zusammenhang mit buildpack erhalten, überprüfen Sie, ob Ihr GIT COMMIT eine package.json-Datei im Stammverzeichnis enthält. Wenn dies der Fall ist, versuchen Sie, das Buildpack manuell mit "heroku buildpacks: set heroku/nodejs" (oder Ihrer gewünschten Sprache) anzugeben. Dies sollte die meisten Fehler im Zusammenhang mit der Erkennung von Baupaketen beheben.

+0

Du bist der Mann Kumpel! Rettete mein Leben! –

1

Wenn Sie auf einem Zweig arbeiten, müssen Sie Master setzen Ihre Niederlassung

git branch -f --track master origin/branch_name

prüfen package.json in Master

git show master:package.json

verfolgen Wenn es verfügbar ist, versuche erneut zu drücken.

git push heroku master

`

0

Die meisten Anwendungen haben mindestens eine dieser Signaturen vorhanden, so dass, wenn Sie diesen Fehler sehen, bedeutet dies in der Regel eine wichtige Datei in Ihrem Git Repository nicht überprüft:

  • Java: pom.xml

  • Rubin: Gemfile

  • Node.js: package.json

  • Python: requirements.txt/setup.py/Pipfile

  • PHP: composer.json/index.php

Sie sollten:

git add {file} 
git commit -am 'added {file} 
git push heroku master