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

Kha*_*nna 13 python heroku node.js flask

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

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

Kha*_*nna 29

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

为了解决这个问题,我不得不手动告诉Heroku我想使用这个命令进行python构建

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


drs*_*drs 23

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

echo 'package.json' >> .slugignore
git add .slugignore
Run Code Online (Sandbox Code Playgroud)

.slugignore就像.gitignore.它驻留在存储库的根目录中,并且应包含文件名和通配符模式的列表.匹配文件保留在您的git存储库中,但在您推送到Heroku后会从slug中删除.删除发生在buildpacks运行之前,因此node.js buildpack将找不到package.json,并且应用程序不会被错误识别为node.js应用程序.

  • +1,因为这是更简单的解决方案. (2认同)
  • 这个解决方案更加优雅. (2认同)