我正在尝试将测试应用程序部署到Heroku --stack cedar,但每次我执行我的Procfile时都会被忽略。
应该这样说:
Procfile declares types -> web
但是说这个
Procfile declares types -> (none)
由于这个问题,当我导航URL时,它当然不会加载到heroku平台上。
除了这个测试(A)之外,我在另一个文件夹中有一个IDENTICAL项目(B)。我对于为什么(A)不是我现在要来这里问我感到非常困惑。
我尝试过的其他一些事情(A)包括:
如果我制作(B)的顶级文件夹副本,则该副本将起作用。问题似乎是将文件/文件夹从(B)等内部复制到(A)中被诅咒的文件/文件夹中。
所以,到目前为止,我所能确定的一切都在减去这个(A)被诅咒的文件夹。我很想知道为什么而不是必须得出巫术的结论。
答案 0 :(得分:33)
我遇到了同样的问题,我刚才发现了什么问题。我首先意外地调用文件ProcFile
而不是Procfile
。简单地重命名该文件并没有被git选中。我必须首先执行git rm ProcFile -f
,然后添加一个新的(正确命名的)Procfile
。之后,它被git正确推送并被Heroku正确拾取。
答案 1 :(得分:4)
记录名称和内容之间的空格似乎很重要:
使用:
web: python manage.py runserver
而不是
web:python manage.py runserver
答案 2 :(得分:4)
确保您的Procfile没有任何扩展名。如果有任何扩展名,您必须将该文件重命名为Procfile而不提供任何扩展名并提交并签出主文件
答案 3 :(得分:2)
您还记得将Procfile
提交给git吗?我忘了做这个提交,做了git push heroku master
,并看到了上面提到的(none)
消息。
如果您忘记了,请提交Procfile
并再次执行git push heroku master
。
答案 4 :(得分:1)
我要在Pascal Lindelauf回答中添加-确保您的文件名是“ Procfile”(大写P)而不是“ procfile” (我刚才就是这种情况) 祝你好运!
答案 5 :(得分:1)
此问题主要是由从命令提示符或终端运行create create Procfile命令引起的。我建议您手动创建Procfile。
如果您使用的是Visual Studio代码,请单击pipfile,然后在上方单击create new file
按钮,然后将文件名输入为Procfile
。
在执行此操作之前,请删除先前的Procfile,并在活动的虚拟环境中的命令提示符中使用命令git rm procfile -f
。
如果您使用任何其他IDE,请打开记事本并在其中输入此行
网址:gunicorn mb_project.wsgi --log-file
-
之后,将其另存为Procfile并将该文件放在pipfile下方。
答案 6 :(得分:0)
我有话要说关于“ Procfile声明类型->(无)”错误。
我们要注意的一件事是“ Procfile”文件的隐藏扩展名。我以为“ Procfile”中的命令是正确的,但是我一直收到此错误。半个小时后,我发现“ Procfile”的扩展名为“ .txt”,但被macOS的默认设置隐藏了。删除扩展名后,一切正常!
答案 7 :(得分:0)
我遇到了此错误,并尝试了上述所有解决方案,但是它们没有起作用。原来,我已经在虚拟环境的根目录中创建了git存储库。这似乎很鲁but,但嘿...
因此,如果您尝试了所有解决方案,但都无法正常工作,请检查您在哪里创建了存储库,并确保它位于项目源代码的根目录中,而不是其他任何地方。
答案 8 :(得分:0)
我在将Django应用程序部署到Heroku时遇到问题。
manage.py
所在的位置)中初始化Procfile
需要坐的地方文件结构:
Documents/
|---djangoprojectname/
| |---djangoprojectname/
| | |---__init__.py
| | |---settings.py
| | |---urls.py
| | |---wsgi.py
| |---djangoappname/
| |---.git
| |---manage.py
| |---Procfile
根据docs,Procfile
应该看起来像这样:
web: gunicorn djangoprojectname.wsgi
答案 9 :(得分:0)
我遇到了同样的问题,并尝试了此处发布的所有内容。我得到了:
Procfile declares types -> (none)
代替Procfile声明类型-> web。 我的解决方法是将regedit更改为0(此处的教程https://www.thewindowsclub.com/show-file-extensions-in-windows),然后在Procfile的末尾删除.txt(因此它只是一个没有扩展名的文件)。之后,我的问题解决了!您可以检查是否已在cmd中执行以下命令:
heroku ps
应显示如下内容:
=== web (Free): gunicorn app:app (1)
或git push:
git push heroku master
那应该显示:
Procfile declares types -> web
答案 10 :(得分:0)
确保您不对Procfile进行任何扩展。我做了,并得到类似的错误。还要检查语法。例如:
web:sh setup.sh应该是
web:sh setup.sh
答案 11 :(得分:0)
注意Procfile的命名和位置(https://devcenter.heroku.com/articles/procfile) Procfile 始终是名为 Procfile 没有文件扩展名的“简单文本文件”。(Procfile.txt 不可接受!)
Procfile 必须位于您应用的根目录中。如果放在其他地方,它就不起作用。