Почему Heroku не обнаруживает Node.js buildpack?
I git клонировано приложение Node.js(версия, указанная в файле package.json 4.1.2, а моя локальная машина - 6.2.2) и попыталась git нажать на Heroku. Но он не смог построить и дал эту ошибку:
Failed to detect set buildpack https<span>:</span>//codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz
Теперь я устанавливаю buildpack в 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<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.
Какими могут быть возможные причины для того, чтобы .js buildpack не был обнаружен, даже если я его установил?
Ответы
Ответ 1
Это означает, что файл package.json
не проверен в корневом каталоге вашего проекта git, поэтому Heroku обнаруживает, что он не является приложением Node.js. Вы можете увидеть это локально:
git show master:package.json
Чтобы исправить это, вы должны быть уверены, что в корневом каталоге вашего проекта есть package.json(где есть также каталог .git) и добавьте его в git:
git add package.json
git commit -m 'track package.json'
Фраза ( "не удалось обнаружить set buildpack" ) может быть улучшена. Вероятно, он должен сказать: "не удалось обнаружить приложение Node.js". Когда выполняется buildpack "обнаружение" script (https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect), он ищет файл package.json, чтобы убедиться, что доступно приложение node для построить.
Ответ 2
Это потому, что Heroku считает, что вы развертываете приложение Node. Но то, что вы развертываете, это каталог public
приложения Node, а не Node.
Heroku использует buildpacks, чтобы выбрать способ обработки ap. Вы хотите очистить ассоциацию Node:
buildpacks:clear # clear all buildpacks set on the app
Это означает, что "Следующий релиз будет нормально обнаруживать buildpack". Это должно решить его для вас.
ref: https://devcenter.heroku.com/articles/buildpacks
Ответ 3
У меня была аналогичная проблема, вот шаги, которые решили проблему.
heroku buildpacks:set heroku/nodejs
git push heroku master
В основном детали указаны в дополнительной информации -
Эта ситуация также может возникнуть, если вы удалите или переименуете файл, который ранее приводил к автоматическому обнаружению вашего типа приложения и, таким образом, автоматически устанавливал обнаруженный buildpack в вашем приложении.
Ответ 4
Некоторые крошечные разъяснения по другим ответам:
Ошибка "Не удалось обнаружить set buildpack https://codon-buildpacks.s3.amazonaws. com/buildpacks/heroku/nodejs.tgz" или что-то подобное, означает сказать, что GIT COMMIT, который вы пытаетесь нажать на героку, был не DETECTED как приложение node.js. (Обратите внимание на капиталы для тонкостей).
Недавно я сделал глупую ошибку, из-за которой я знал об этом: Запуск "ls -a" показал, что мои файлы package.json и .git были в том же корневом каталоге, что и требуется героку. ЗА ИСКЛЮЧЕНИЕМ, что файл package.json не включен в мой последний коммит GIT. Запуск "git status" предупредил меня, что package.json был неподписанным файлом. Поэтому я добавил его, и та-да, нажав на герою, работал.
Если вы получили сообщение об ошибке, связанной с buildpack, убедитесь, что ваш GIT COMMIT имеет файл package.json в корневом каталоге. Если это так, попробуйте вручную указать buildpack с помощью "heroku buildpacks: set heroku/nodejs" (или вашего желаемого языка). Это должно устранить большинство ошибок, связанных с обнаружением buildpack.
Ответ 5
Если вы работаете с веткой, вам нужно установить мастер для отслеживания ветки
git branch -f --track master origin/branch_name
Проверьте, что package.json в master
git show master:package.json
Если это доступно, повторите попытку.
git push heroku master
`
Ответ 6
В большинстве приложений есть хотя бы одна из этих подписей, поэтому, если вы видите эту ошибку, обычно это означает, что важный файл не проверяется в вашем репозитории git:
Вы должны:
git add {file}
git commit -am 'added {file}
git push heroku master