Heroku中“Procfile声明类型 - >(无)”的原因是什么?

时间:2011-06-14 15:39:53

标签: git heroku

我正在尝试将测试应用程序部署到Heroku --stack cedar,但每次我执行我的Procfile时都会被忽略。

应该这样说:

Procfile declares types -> web

但是说这个

Procfile declares types -> (none)

由于这个问题,当我导航URL时,它当然不会加载到heroku平台上。

除了这个测试(A)之外,我在另一个文件夹中有一个IDENTICAL项目(B)。我对于为什么(A)不是我现在要来这里问我感到非常困惑。

我尝试过的其他一些事情(A)包括:

  • 重新创建heroku app
  • 重新创建git repo(即删除.git,git init ...)
  • 清除项目文件夹中的文件,并从另一个有效的副本中复制文件

如果我制作(B)的顶级文件夹副本,则该副本将起作用。问题似乎是将文件/文件夹从(B)等内部复制到(A)中被诅咒的文件/文件夹中。

所以,到目前为止,我所能确定的一切都在减去这个(A)被诅咒的文件夹。我很想知道为什么而不是必须得出巫术的结论。

12 个答案:

答案 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下方。

这是我的文件https://github.com/YashMarmat/message-board-app.git

的链接

答案 6 :(得分:0)

我有话要说关于“ Procfile声明类型->(无)”错误。

我们要注意的一件事是“ Procfile”文件的隐藏扩展名。我以为“ Procfile”中的命令是正确的,但是我一直收到此错误。半个小时后,我发现“ Procfile”的扩展名为“ .txt”,但被macOS的默认设置隐藏了。删除扩展名后,一切正常!

答案 7 :(得分:0)

我遇到了此错误,并尝试了上述所有解决方案,但是它们没有起作用。原来,我已经在虚拟环境的根目录中创建了git存储库。这似乎很鲁but,但嘿...

因此,如果您尝试了所有解决方案,但都无法正常工作,请检查您在哪里创建了存储库,并确保它位于项目源代码的根目录中,而不是其他任何地方。

答案 8 :(得分:0)

我在将Django应用程序部署到Heroku时遇到问题。

  • git库必须在Django项目根文件夹(manage.py所在的位置)中初始化
  • 这也是Procfile需要坐的地方

文件结构:

Documents/
|---djangoprojectname/
|   |---djangoprojectname/
|   |   |---__init__.py
|   |   |---settings.py
|   |   |---urls.py
|   |   |---wsgi.py
|   |---djangoappname/
|   |---.git
|   |---manage.py
|   |---Procfile

根据docsProcfile应该看起来像这样:

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 必须位于您应用的根目录中。如果放在其他地方,它就不起作用。