为什么我的Flask应用程序在Heroku上被检测为node.js.

时间:2013-11-24 04:37:54

标签: python node.js heroku flask

我最近对heroku上托管的Flask应用程序的结构进行了一些更改,现在heroku决定将其检测为Python应用程序的Node.js app intead。我的应用程序使用python(Flask)作为后端api和javascript作为前端。

我所做的更改包括将npm和bower集成到我的应用程序中,以简化应用程序的javascript开发。

2 个答案:

答案 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应用程序。