web-dev-qa-db-ja.com

HerokuがNode.jsビルドパックを検出できないのはなぜですか?

Node.jsアプリケーションをgitクローン(package.jsonで指定されたバージョンが4.1.2であり、ローカルマシンのバージョンが6.2.2である)とHerokuでgit Pushを試みました。しかし、ビルドに失敗し、このエラーが発生しました:

セットビルドパックの検出に失敗しましたhttps://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz

ビルドパックをheroku/nodejsに設定すると、次のメッセージが表示されます。

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.

git Push heroku masterを実行すると、もう一度言われます:

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.

Node.jsビルドパックを設定しても検出されない理由は何ですか?

26
Shree

これは、package.jsonファイルはgitプロジェクトのルートにチェックインされないため、HerokuはNode.jsアプリではないことを検出しています。これはローカルで見ることができます:

git show master:package.json

これを修正するには、プロジェクトのルート(.gitディレクトリもある)にpackage.jsonがあることを確認し、gitに追加します。

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

フレージング(「セットビルドパックの検出に失敗しました」)を改善できます。 「Node.jsアプリの検出に失敗しました」と表示されるはずです。ビルドパックの「検出」スクリプトが実行されると( https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect )、package.jsonファイルが検索されますビルド可能なノードアプリがあることを確認します。

31
hunterloftis

Herokuは、あなたがNodeアプリをデプロイしていると考えているからです。ただし、展開するのは、Nodeコードではなく、Nodeアプリのpublicディレクトリです。

Herokuはビルドパックを使用して、apの処理方法を選択します。 Nodeアソシエーションをクリアしたい場合:

buildpacks:clear # clear all buildpacks set on the app

これは、「次のリリースではビルドパックが正常に検出される」ことを意味します。これにより、解決できます。

参照: https://devcenter.heroku.com/articles/buildpacks

10
Scott

私は同様の問題を抱えていた、ここに問題を解決した手順があります。

heroku buildpacks:set heroku/nodejs
git Push heroku master

基本的に詳細は詳細情報リンクにあります-


この状況は、以前にアプリケーションの種類の自動検出につながったファイルを削除または名前を変更した場合にも発生する可能性があり、検出されたビルドパックがアプリケーションで自動設定されます。


4

ブランチで作業している場合は、マスターを設定してブランチを追跡する必要があります

git branch -f --track master Origin/branch_name

マスターでpackage.jsonを確認します

git show master:package.json

利用可能な場合は、もう一度プッシュしてみてください。

git Push heroku master

`

2
Del_sama

他の答えに関するいくつかの小さな説明:「set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgzの検出に失敗しました」または同様のエラーは、あなたがしようとしているGIT COMMITを言うことを意味しますpush to herokuは、node.jsアプリとして検出されませんでした。 (微妙な資本に注意してください)。

私は最近、これに気づいた愚かな間違いを犯しました。「ls -a」を実行すると、package.jsonファイルと.gitファイルがherokuの要求どおりに同じルートディレクトリにあることがわかりました。 package.jsonファイルが最新のgitコミットに含まれていなかったことを除きます。 「git status」を実行すると、package.jsonが追跡されていないファイルであることが通知されました。だから、私はそれを追加し、ta-da、herokuにプッシュすることはうまくいきました。

Buildpackに関連するエラーが発生した場合は、GIT COMMITのルートディレクトリにpackage.jsonファイルがあることを確認してください。これに該当する場合は、「heroku buildpacks:set heroku/nodejs」(または目的の言語)でビルドパックを手動で指定してみてください。これにより、ビルドパックの検出に関連するほとんどのエラーが解決されます。

1

ほとんどのアプリにはこれらの署名の少なくとも1つが存在するため、このエラーが表示される場合、通常は重要なファイルがgitリポジトリにチェックインされていないことを意味します。

  • Java:pom.xml

  • Ruby:Gemfile

  • Node.js:package.json

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

  • PHP:composer.json/index.php

あなたがすべき:

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