web-dev-qa-db-de.com

Warum erkennt Heroku das Node.js-Buildpack nicht?

Ich habe eine Node.js-Anwendung geklont (die in package.json angegebene Version war 4.1.2 und diejenige meines lokalen Computers 6.2.2) und habe versucht, Push auf Heroku auszuführen. Aber es konnte nicht gebaut werden und gab diesen Fehler:

Set buildpack konnte nicht gefunden werden https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz

Jetzt setze ich das Buildpack auf heroku/nodejs und erhalte folgende Nachricht:

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 nun git Push heroku master starte, wird mir wieder gesagt:

remote: -----> Failed to detect set buildpack
        https://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önnte die möglichen Gründe dafür sein, dass das Node.js-Buildpack nicht erkannt wird, selbst wenn ich es eingestellt habe?

22
Shree

Dies bedeutet, dass eine package.json-Datei nicht im Stammverzeichnis Ihres git-Projekts eingecheckt ist. Heroku erkennt also, dass es sich nicht um eine Node.js-App handelt. Sie können dies lokal sehen:

git show master:package.json

Um dies zu beheben, sollten Sie sicher sein, dass sich im Stammverzeichnis Ihres Projekts (in dem sich auch ein .git-Verzeichnis befindet) eine package.json befindet, und es zu git hinzufügen:

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

Die Phrasierung ('Set Buildpack konnte nicht erkannt werden') konnte verbessert werden. Es sollte wahrscheinlich sagen, dass die Node.js-App nicht erkannt werden konnte. 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 dies zu überprüfen Es gibt eine Knoten-App, die erstellt werden kann.

28
hunterloftis

Dies liegt daran, dass Heroku der Meinung ist, dass Sie eine Node-App bereitstellen. Was Sie jedoch bereitstellen, ist das public-Verzeichnis einer Knoten-App und nicht der Knotencode.

Heroku verwendet Buildpacks, um auszuwählen, wie der AP behandelt wird. Sie möchten diese Knotenzuordnung löschen:

buildpacks:clear # clear all buildpacks set on the app

Dies bedeutet, dass "Next Release Buildpack normalerweise erkennen wird.", Das sollte es für Sie lösen.

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

8
Scott

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

heroku buildpacks:set heroku/nodejs
git Push heroku master

Grundsätzlich sind Details im Link "Mehr Infos" - 


Diese Situation kann auch auftreten, wenn Sie eine Datei entfernen oder umbenennen, die zuvor zur automatischen Erkennung Ihres Anwendungstyps und damit zur automatischen Einstellung des erkannten Buildpacks in Ihrer Anwendung führte.


4

Wenn Sie an einem Zweig arbeiten, müssen Sie den Master so einstellen, dass er Ihren Zweig verfolgt

git branch -f --track master Origin/branch_name

Suchen Sie nach package.json im Master

git show master:package.json

Wenn es verfügbar ist, versuchen Sie es erneut.

git Push heroku master

`

2
Del_sama

Einige winzige Klarstellungen zu anderen Antworten: Der Fehler "Fehler beim Erkennen des gesetzten Buildpacks https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz" oder ähnliches bedeutet, den GIT COMMIT zu sagen Sie versuchen Push to Heroku wurde nicht als knoten.js App erkannt. (Beachten Sie die Großbuchstaben für Feinheiten).

Ich habe kürzlich einen dummen Fehler gemacht, der mich darauf aufmerksam gemacht hat: Das Ausführen von "ls -a" zeigte, dass meine package.json- und .git-Dateien sich im selben Stammverzeichnis befanden, wie von heroku gefordert. AUSNAHME, dass die package.json-Datei NICHT in meinem letzten Git-Commit enthalten war. Wenn Sie "git status" ausführen, wurde mir mitgeteilt, dass package.json eine nicht aufgespürte Datei war. Also fügte ich es hinzu und ta-da arbeitete ich mit Heroku. 

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, geben Sie das Buildpack manuell mit "heroku buildpacks: set heroku/nodejs" (oder Ihrer gewünschten Sprache) an. Dies sollte die meisten Fehler beheben, die sich auf die Buildpack-Erkennung beziehen.

1

Bei den meisten Apps ist mindestens eine dieser Signaturen vorhanden. Wenn Sie diesen Fehler sehen, bedeutet dies normalerweise, dass eine wichtige Datei nicht in Ihr Git-Repository eingecheckt wird:

  • Java: pom.xml

  • Ruby: Gemfile

  • Node.js: package.json

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

  • PHP: composer.json/index.php

Du solltest:

git add {file}
git commit -am 'added {file} 
git Push heroku master
0
Akash Kandpal