这是我第一次使用Heroku
,事实上我在谷歌中找不到任何有类似错误的人,这意味着我可能做错了的事情:
我在这里遵循基本的Heroku设置指南来将我的NodeJS应用程序部署到web上。我已部署并尝试使用检查我的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
)。
问题是为什么会发生这种情况,我该如何补救,我应该关心吗?
在Heroku上运行的进程定义在一个名为Procfile 的简单文本文件中
概要文件包含一行,用于定义应用程序中每个进程的运行方式。这将是特定于语言的,示例可以在Heroku Devcenter Procfile文章上看到
请注意,Procfile的拼写必须准确,第一个字母大写,其他字母小写。Procfile没有文件扩展名。这个Procfile应该放在项目的根目录中,并在执行git-push-heroku master之前提交到本地git存储库。
如果在将文件名添加到git后键入错误,可以使用命令使用git重命名文件名
git mv ProcFile Procfile
重命名后的文件将被暂存,因此您可以使用命令提交更改后的文件
git commit -m "corrected name of Procfile"
我自己找到了解决方案,从这里开始:https://stackoverflow.com/a/7641259/556006
我也遇到了同样的问题,我刚刚发现了问题所在。我先意外地调用了文件ProcFile而不是ProcFile。仅仅git没有处理重命名该文件的问题。我不得不做一个git-rmProcFile-f,然后添加一个新的(正确命名的)ProcFile。之后它被git正确地推动,并被Heroku。
我自己也遇到过这个问题,但在我的情况下,我在web:
和Procfile中的启动命令之间缺少了一个空格。
例如,我错了:
web:gunicorn run:app
通过在冒号后添加空格修复了此问题:
web: gunicorn run:app
我猜您从未做过git push heroku master
——也就是说,Heroku从未见过您的代码。