我最近对heroku上托管的Flask应用程序的结构进行了一些更改,现在heroku决定将其检测为Python应用程序的Node.js app intead。我的应用程序使用python(Flask)作为后端api和javascript作为前端。
我所做的更改包括将npm和bower集成到我的应用程序中,以简化应用程序的javascript开发。
答案 0 :(得分:29)
当我开始使用npm时,在我的根目录中添加package.json
时引入了这个问题。似乎构建检测脚本首先运行nodejs检测(here),导致此代码: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
。
答案 1 :(得分:23)
package.json
文件导致Heroku将其检测为node.js应用。要防止这种情况,请将文件名添加到.slugignore
文件中:
echo 'package.json' >> .slugignore
git add .slugignore
.slugignore
与.gitignore
类似。它驻留在存储库的根目录中,并且应包含文件名和通配符模式的列表。匹配文件保留在您的git存储库中,但在您推送到Heroku后会从slug中删除。删除发生在buildpacks运行之前,因此node.js buildpack找不到package.json
,并且应用程序不会被误认为是node.js应用程序。