Почему приложение Flask обнаружено как node.js на Heroku
Недавно я внес некоторые изменения в структуру моего приложения Flask, размещенного на heroku, и теперь heroku решил обнаружить его как приложение Node.js для приложения Python. Мое приложение использует как python (Flask) для backend api, так и javascript для переднего конца.
Изменения, внесенные мной, включали интеграцию npm и bower в мое приложение для оптимизации разработки javascript приложения.
Ответы
Ответ 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.