Heroku procfile“没有在Procfile中定义的此类进程类型Web”错误

时间:2013-07-25 01:42:30

标签: heroku foreman heroku-toolbelt

这是我第一次使用Heroku,而且我无法在Google中找到任何与此类似错误的人,这意味着我可能正在做一些 方式 错误:

我正在关注基本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)。

问题为什么会发生这种情况,我该如何解决,我是否应该关心?

4 个答案:

答案 0 :(得分:8)

在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"

答案 1 :(得分:2)

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

  

我遇到了同样的问题,我刚才发现了什么问题。我先来   意外地称为文件ProcFile而不是Procfile。只是   重命名该文件没有得到git。我不得不做一个git rm   首先是ProcFile -f然后添加一个新的(正确命名的)Procfile。后   它被git正确推送并被正确拾取   Heroku的。

答案 2 :(得分:2)

我自己就是这个问题,但就我而言,我在web:和Procfile中的起始命令之间错过了一个空格。

例如,我这样做错了:

web:gunicorn run:app

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

web: gunicorn run:app

答案 3 :(得分:1)

我猜你从未做过git push heroku master - 也就是说,Heroku从未见过你的代码。