web-dev-qa-db-fra.com

Pourquoi Heroku ne parvient-il pas à détecter le pack de construction Node.js?

J'ai git cloné une application Node.js (la version spécifiée dans package.json étant 4.1.2 et celle de ma machine locale étant 6.2.2) et j'ai essayé de git Push on Heroku. Mais il n'a pas réussi à construire et a donné cette erreur:

Échec de la détection de l'ensemble de buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz.

Maintenant, je mets le buildpack à heroku/nodejs et je reçois ce message:

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.

Maintenant, quand je lance git Push heroku master, on me dit à nouveau:

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.

Quelles pourraient être les raisons possibles pour que le pack de construction Node.js ne soit pas détecté même si je le configure?

22
Shree

Cela signifie qu'un fichier package.json n'est pas archivé à la racine de votre projet git, donc Heroku détecte qu'il ne s'agit pas d'une application Node.js. Vous pouvez voir ceci localement:

git show master:package.json

Pour résoudre ce problème, assurez-vous qu'il existe un package.json à la racine de votre projet (où se trouve également un répertoire .git), puis ajoutez-le à git:

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

La formulation ('échec de la détection de l'ensemble de buildpack') pourrait être améliorée. Il devrait probablement indiquer «échec de la détection de l'application Node.js». Lorsque le script "detect" du buildpack est exécuté ( https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect ), il recherche un fichier package.json pour vérifier que il y a une application de noeud disponible à construire.

28
hunterloftis

C’est parce que Heroku pense que vous déployez une application Node. Mais ce que vous déployez, c'est le répertoire public d'une application Node, pas le code Node.

Heroku utilise des paquets de construction pour sélectionner le mode de traitement de l'ap. Vous voulez effacer cette association de nœud:

buildpacks:clear # clear all buildpacks set on the app

Ce qui signifie que “La prochaine version détectera le buildpack normalement.”, Cela devrait le résoudre pour vous.

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

8
Scott

J'ai eu le même problème, voici les étapes qui ont résolu le problème.

heroku buildpacks:set heroku/nodejs
git Push heroku master

Fondamentalement, les détails sont dans le lien plus d'infos - 


Cette situation peut également se produire si vous supprimez ou renommez un fichier ayant précédemment conduit à la détection automatique du type de votre application et donc au paramétrage automatique du buildpack détecté sur votre application.


4
Pandurang Yachwad

Si vous travaillez sur une branche, vous devez définir maître pour suivre votre branche.

git branch -f --track master Origin/branch_name

Vérifiez le package.json dans le maître

git show master:package.json

Si c'est disponible, essayez à nouveau de pousser.

git Push heroku master

`

2
Del_sama

Quelques petites précisions sur d'autres réponses: L'erreur "Échec de la détection de l'ensemble de buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz" ou quelque chose de similaire, signifie que le GIT COMMIT vous essayez de Pousser à heroku n'a pas été détecté comme une application de noeud.js. (Notez les majuscules pour les subtilités).

J'ai récemment commis une erreur stupide qui m'a fait prendre conscience de cela: exécuter "ls -a" montrait que mes fichiers package.json et .git se trouvaient dans le même répertoire racine, comme l'exigeait heroku. SAUF que le fichier package.json N'ÉTAIT PAS inclus dans mon dernier commit git. L'exécution de "git status" m'a alerté sur le fait que package.json était un fichier non suivi. Alors je l'ai ajouté, et ta-da, pousser à heroku a fonctionné. 

Si vous obtenez une erreur liée à buildpack, vérifiez que votre GIT COMMIT a un fichier package.json dans le répertoire racine. Si cela est vrai, essayez de spécifier manuellement le buildpack avec "heroku buildpacks: set heroku/nodejs" (ou la langue de votre choix). Cela devrait résoudre la plupart des erreurs liées à la détection du buildpack.

1
Aaron Chamberlain

La plupart des applications ont au moins une de ces signatures. Si vous voyez cette erreur, cela signifie généralement qu'un fichier important n'est pas archivé dans votre référentiel git:

  • Java: pom.xml

  • Ruby: Gemfile

  • Node.js: package.json

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

  • PHP: composer.json/index.php

Vous devriez:

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