【问题标题】:What is the reason for "Procfile declares types -> (none)" in Heroku?Heroku中“Procfile声明类型->(无)”的原因是什么?
【发布时间】:2011-09-14 19:55:35
【问题描述】:

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

应该是这样说的:

Procfile declares types -> web

但是这样说

Procfile declares types -> (none)

由于这个问题,当我浏览 URL 时,它当然不会在 heroku 平台上加载。

除了这个测试 (A) 我在另一个文件夹中有一个相同的项目 (B) 可以工作。我非常困惑为什么(A)不我现在来这里问。

我用 (A) 尝试过的其他几件事包括:

  • 重新创建 heroku 应用程序
  • 重新创建 git 存储库(即删除 .git、git init...)
  • 从项目文件夹中清除文件,并从另一个有效的副本中复制文件

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

所以,到目前为止,我所能确定的是,减去这个 (A) 被诅咒的文件夹后一切正常。我很想找出原因,而不必得出巫术的结论。

【问题讨论】:

  • 检查了你的 .gitignore 文件?
  • 嗨 Andre,我在 .gitignore 中只有这个文本:“node_modules”

标签: git heroku


【解决方案1】:

就我而言,我有多模块项目。我已将 Procfile 放入服务器模块(这是唯一打算在 heroku 上运行的模块),但 Heroku 在根项目目录中搜索它(上一级)。

【讨论】:

    【解决方案2】:

    注意Procfile的命名和位置(https://devcenter.heroku.com/articles/procfile) Procfile 始终是一个名为 Procfile 的“简单文本文件”没有文件扩展名。(Procfile.txt 不可接受!)

    Procfile 必须位于应用的根目录中。如果放在其他任何地方,它就不起作用。

    【讨论】:

      【解决方案3】:

      确保您没有为 Procfile 提供任何扩展名。我做了并得到了类似的错误。还要检查语法。例如:

      web : sh setup.sh 应该是

      网页:sh setup.sh

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,并尝试了此处发布的所有内容。我得到了:

        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
        

        【讨论】:

          【解决方案5】:

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

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

          文件结构:

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

          Procfile 按照docs 应该是这样的:

          web: gunicorn djangoprojectname.wsgi
          

          【讨论】:

            【解决方案6】:

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

            因此,如果您尝试了所有解决方案但它们都不起作用,请检查您创建存储库的位置并确保它位于项目源代码的根目录中,而不是其他任何位置。

            【讨论】:

              【解决方案7】:

              这个问题主要是从命令提示符或终端运行 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

              【讨论】:

                【解决方案8】:

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

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

                【讨论】:

                  【解决方案9】:

                  我要添加到 Pascal Lindelauf 的答案 - 确保您的文件名是“Procfile”(大写 P)而不是“procfile” (我刚才也是这样) 祝你好运!

                  【讨论】:

                    【解决方案10】:

                    你还记得将Procfile 提交给 git 吗?我忘了做这个提交,做了一个git push heroku master,看到了上面提到的(none)消息。

                    如果您忘记了,请提交您的Procfile 并再次执行git push heroku master

                    【讨论】:

                      【解决方案11】:

                      确保您的 Procfile 没有任何扩展名。如果有任何扩展名,您必须将该文件重命名为 Procfile 而没有任何扩展名并提交并签出主文件

                      【讨论】:

                        【解决方案12】:

                        记录名称和内容之间的空格似乎很重要:

                        用途:

                        web: python manage.py runserver

                        而不是

                        web:python manage.py runserver

                        【讨论】:

                          【解决方案13】:

                          我遇到了同样的问题,我刚刚发现了问题所在。我第一次不小心调用了文件ProcFile 而不是Procfile。简单地重命名该文件并没有被 git 拾取。我必须先做一个git rm ProcFile -f,然后添加一个新的(正确命名的)Procfile。之后,它被git正确推送并被Heroku正确拾取。

                          【讨论】:

                          • 谢谢..!这节省了我几个小时..!
                          • 非常感谢。我的问题有点不同。我使用的是 OSX,我可以看到我的 Procfile 文件完全称为“Procfile”。但仍然未能部署。在我运行“git rm Procfile -f”之后,它返回了“rm 'procfile'”。我不知道为什么如果显示“P”(大写)而不是“p”。但是在我手动重新创建“配置文件”之后,它开始工作了。我建议发生错误的原因是什么,我们可以删除并重新创建“Procfile”文件。它就像一个魅力。
                          • 非常感谢,我知道这是旧的。但我仍然面临这个奇怪的问题。
                          • @Pascal Lindelauf 兄弟,你是个救援者!
                          • 这救了我。将 procFile 重命名为 Procfile 并没有被 git 接受。也许您可以通过'git ls-files'添加到答案以检查文件的真实名称,然后我就清楚了。
                          猜你喜欢
                          • 2021-05-24
                          • 2012-07-17
                          • 1970-01-01
                          • 2020-10-04
                          • 2012-08-31
                          • 2013-06-01
                          • 1970-01-01
                          • 2017-11-02
                          • 2012-11-17
                          相关资源
                          最近更新 更多