Heroku procfile“Procfile 中没有定义这样的进程类型 web”错误

Posted

技术标签:

【中文标题】Heroku procfile“Procfile 中没有定义这样的进程类型 web”错误【英文标题】:Heroku procfile "No such process type web defined in Procfile" error 【发布时间】:2013-07-24 17:35:26 【问题描述】:

这是我第一次使用Heroku,事实上我在 Google 中找不到与此类似的错误的人,这意味着我可能正在做某事方式 em> 错误:

我正在遵循基本的Heroku setup guide here 将我的 NodeJS 应用程序部署到网络上。我已部署并尝试通过以下方式检查我的dynos

heroku ps:scale web=1

但是,当我这样做时,我得到了错误:

Scaling web dynos... failed
 !    No such process type web defined in Procfile.

当我运行 heroku ps 时,我什么也没返回。

在我的应用程序的根目录中,我有一个名为 Procfile(没有扩展名)的文件,其中包含:

web: node app.js

应用在本地运行没有任何问题(使用foreman start)。

问题是为什么会发生这种情况,我该如何补救,我应该在意吗?

【问题讨论】:

【参考方案1】:

在 Heroku 上运行的进程定义在一个名为 Procfile 的简单文本文件中

配置文件包含定义应用程序中每个进程如何运行的行。这将是特定于语言的,可以在Heroku Devcenter Procfile article 上查看示例

请注意,Procfile 的拼写必须准确,第一个字母大写,其他字母小写。 Procfile 没有文件扩展名。在执行 git push heroku master 之前,应将此 Procfile 放在项目的根目录中并提交到本地 git 存储库。

如果文件名在添加到 git 后输入错误,可以使用 git 命令重命名

git mv ProcFile Procfile

重命名的文件将被暂存,以便您可以使用命令提交更改的文件

git commit -m "corrected name of Procfile"

【讨论】:

里面应该有什么?【参考方案2】:

我自己从这里找到了解决方案:https://***.com/a/7641259/556006

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

【讨论】:

【参考方案3】:

我自己也遇到过这个问题,但就我而言,我在 web: 和 Procfile 中的启动命令之间缺少一个空格。

例如,我是这样弄错的:

web:gunicorn run:app

通过在冒号后添加一个空格来修复它:

web: gunicorn run:app

【讨论】:

【参考方案4】:

我猜你从来没有做过git push heroku master——也就是说,Heroku 从来没有看过你的代码。

【讨论】:

不,事实上我已经这样做了两次(第二次它只是告诉我一切都是最新的。 如果你运行heroku run bash,你能在你的应用目录中看到Procfile吗? 它不在我身边,这是什么意思?为什么不是?

以上是关于Heroku procfile“Procfile 中没有定义这样的进程类型 web”错误的主要内容,如果未能解决你的问题,请参考以下文章

Heroku,Java,Procfile,找不到或加载主类

Procfile 在 Heroku 中声明类型 -> (none)

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

Heroku Flask 教程 Procfile 含义

Heroku Gunicorn Procfile

如何创建播放 heroku procfile?