我正在尝试将一个简单的应用程序部署到 Heroku,该应用程序使用 Puppeteer 执行 Web Scraping。 由于在 Heroku 中使用 Puppeteer 存在问题,因此我需要定义一个 buildpack 来支持 Puppeteer,参考以下文章:
按照这些步骤给了我以下错误:
code=H14 desc="No web processes running"
在网上搜索了一下,我找到了以下文章:
说我没有运行 web dynos,我尝试使用建议的命令设置一些:
heroku ps:scale web=1
但这只是给了我这个错误:
Scaling dynos... ! ▸ Couldn't find that process type (web).
我正在运行一个 Node.js 应用程序,使用 Yarn 作为包管理器。
我该怎么办?
答案 0 :(得分:0)
我将描述我解决这个问题所经历的过程,这需要大量时间。
首先,我确定问题不是由使用 Yarn 而不是 npm 引起的,根据 Heroku 文档,如果您的应用程序的根文件夹包含 yarn.lock 文件,那么它应该自动使用 Yarn 来构建应用程序。但是他们也说你需要在你的 package.json 文件中添加你使用的 Yarn 版本的描述,所以我做了:
"engines": {
"yarn": "1.x"
},
那是为了确保问题不是纱线。事实并非如此。 接下来,我试图确切地了解网络测功机的问题所在,经过大量搜索后,我发现了这一点:
heroku buildpacks:clear
作为之前 StackOverflow 问题中的建议,但它又说了一件非常重要的事情:删除现有的 Buildpacks...并重新添加它们以正确的顺序
什么顺序?好吧...显然,当我关注上一个 StackOverflow 问题时,我已经删除了 Heroku 设置附带的所有 Buildpack,包括一个非常重要的 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
现在我知道我有必要的 Buildpacks,而且顺序正确,而且效果很好!