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ビルドパックを設定しても検出されない理由は何ですか?
これは、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ファイルが検索されますビルド可能なノードアプリがあることを確認します。
Herokuは、あなたがNodeアプリをデプロイしていると考えているからです。ただし、展開するのは、Nodeコードではなく、Nodeアプリのpublic
ディレクトリです。
Herokuはビルドパックを使用して、apの処理方法を選択します。 Nodeアソシエーションをクリアしたい場合:
buildpacks:clear # clear all buildpacks set on the app
これは、「次のリリースではビルドパックが正常に検出される」ことを意味します。これにより、解決できます。
私は同様の問題を抱えていた、ここに問題を解決した手順があります。
heroku buildpacks:set heroku/nodejs
git Push heroku master
基本的に詳細は詳細情報リンクにあります-
この状況は、以前にアプリケーションの種類の自動検出につながったファイルを削除または名前を変更した場合にも発生する可能性があり、検出されたビルドパックがアプリケーションで自動設定されます。
ブランチで作業している場合は、マスターを設定してブランチを追跡する必要があります
git branch -f --track master Origin/branch_name
マスターでpackage.jsonを確認します
git show master:package.json
利用可能な場合は、もう一度プッシュしてみてください。
git Push heroku master
`
他の答えに関するいくつかの小さな説明:「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つが存在するため、このエラーが表示される場合、通常は重要なファイルが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