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

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

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

当我开始使用npm时,我在我的根目录下添加了一个package.json ,引入了这个问题。 看起来,构build检测脚本首先运行nodejs检测( 这里 )导致这个代码: if [ -f $1/package.json ]; then echo "Node.js" && exit 0 if [ -f $1/package.json ]; then echo "Node.js" && exit 0执行和Heroku认为这是一个nodejs应用程序,并退出之前,python检测有机会运行。

为了解决这个问题,我不得不手动告诉Heroku,我想用这个命令来构buildpython

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

package.json文件导致Heroku将其检测为node.js应用程序。 为了防止这种情况,请将文件名添加到.slugignore文件中:

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

.slugignore就像.gitignore 。 它驻留在你的仓库的根目录下,并且应该包含一个文件名和通配符模式的列表。 匹配的文件保留在你的git仓库中,但是在你推到Heroku后从slug中删除。 删除发生在构build包运行之前,所以node.js构buildpackage.json将不会findpackage.json并且该应用程序不会被误识别为node.js应用程序。