我正在尝试将一个简单的应用程序部署到Heroku,该应用程序使用Puppeter执行Web Scraping。由于在Heroku中使用Puppeter存在问题,我需要定义一个构建包来支持Puppeter,如下所述:
- 木偶无法在heroku上运行
- https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-heroku上的木偶师
- https://github.com/jontewks/puppeteer-heroku-buildpack
以下步骤给了我以下错误:
code=H14 desc="No web processes running"
在网上搜索了一下之后,我发现了以下文章:
heroku中的- H14错误-";没有web进程运行">
说我没有运行网络dynos,我尝试使用建议的命令设置一些:heroku ps:scale web=1
但这只是给了我一个错误:Scaling dynos... ! ▸ Couldn't find that process type (web).
我正在运行一个Node.js应用程序,使用Yarn作为包管理器。
我该怎么办?
我将描述我为解决这个问题所经历的过程,这需要大量的时间。
首先,根据Heroku文档,我确保问题不是由使用Yarn而不是npm引起的,如果你的应用程序的根文件夹包含Yarn.lock文件,那么它应该自动使用Yarn来构建应用程序。但他们也说你需要在你的package.json文件中添加一个你使用的Yarn版本的描述,所以我做了:
"engines": {
"yarn": "1.x"
},
这是为了确保问题不是纱线。事实并非如此。接下来,我试图确切地了解网络dynos的问题是什么,经过大量搜索,我发现了这个:
- https://help.heroku.com/W23OAFGK/why-am-i-seeing-couldn-t-find-that-process-type-when-trying-to-scale-dynos本文还建议使用
heroku buildpacks:clear
作为StackOverflow问题中的前一个建议,但它还说了一件非常重要的事情:
删除现有的Buildpacks。。。并按正确顺序再次添加
什么订单?好显然,当我关注上一个StackOverflow问题时,我已经删除了Heroku设置附带的所有构建包,包括一个非常重要的构建包heroku/nodejs
。所以我想我必须把它重新添加到我的Buildpack列表中。我还认为,如果这是默认的Buildpack,那么它应该是列表中的第一个,然后应该是用于puppeteer的Buildpack(可以通过使用--index标志来完成(。
最后,我通过运行以下命令解决了问题:
$ heroku buildpacks:clear
$ heroku buildpacks:add heroku/nodejs
$ heroku buildpacks:add --index=2 jontewks/puppeteer
$ git commit --allow-empty -m "Adjust buildpacks on Heroku"
$ git push heroku master
运行$ heroku buildpacks
进行确认,返回以下内容:
=== workday-jobs Buildpack URLs
1. heroku/nodejs
2. jontewks/puppeteer
现在我知道我有了必要的BuildPack,按照正确的顺序,它很有效!