19

这是我第一次使用Heroku,事实上我在 Google 中找不到与此类似的错误的人,这意味着我可能做错了什么

我正在按照这里的基本 Heroku 设置指南将我的 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

4 回答 4

8

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

Profile 包含一行,它定义了应用程序中的每个进程将如何运行。这将是特定于语言的,示例可以在Heroku Devcenter Procfile 文章中看到

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

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

git mv ProcFile Procfile

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

git commit -m "corrected name of Procfile"
于 2013-08-07T14:01:21.757 回答
2

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

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

于 2013-07-25T11:38:37.660 回答
2

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

例如,我以这种方式错了:

web:gunicorn run:app

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

web: gunicorn run:app

于 2014-02-14T20:07:23.993 回答
1

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

于 2013-07-25T05:05:56.957 回答