Подтвердить что ты не робот

Почему приложение Flask обнаружено как node.js на Heroku

Недавно я внес некоторые изменения в структуру моего приложения Flask, размещенного на heroku, и теперь heroku решил обнаружить его как приложение Node.js для приложения Python. Мое приложение использует как python (Flask) для backend api, так и javascript для переднего конца.

Изменения, внесенные мной, включали интеграцию npm и bower в мое приложение для оптимизации разработки javascript приложения.

4b9b3361

Ответ 1

Проблема возникла, когда я добавил package.json в корневой каталог, когда начал использовать npm. Похоже, что обнаружение сборки script сначала запускает обнаружение nodejs (здесь), что приводит к этому коду: if [ -f $1/package.json ]; then echo "Node.js" && exit 0 выполнение, и Heroku думает, что это приложение nodejs и выйдет перед обнаружением python.

Чтобы решить эту проблему, мне пришлось вручную сообщить Heroku, что я хотел построить python с помощью этой команды

heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-python.

Ответ 2

Файл package.json приводит к тому, что Heroku обнаруживает его как приложение node.js. Чтобы предотвратить это, добавьте имя файла в файл .slugignore:

echo 'package.json' >> .slugignore
git add .slugignore

.slugignore похож на .gitignore. Он находится в корневом каталоге вашего репозитория и должен содержать список имен файлов и шаблонов подстановочных знаков. Соответствующие файлы остаются в вашем репозитории git, но удаляются из пули после нажатия на Heroku. Удаление происходит до запуска buildpacks, поэтому node.js buildpack не найдет package.json, и приложение не будет ошибочно идентифицировано как приложение node.js.