【问题标题】:Cloud Functions Puppeteer cannot open browserCloud Functions Puppeteer 无法打开浏览器
【发布时间】:2022-12-28 19:24:57
【问题描述】:

我在 GCF 中的设置:

  1. 从项目 Cloud Shell 安装 npm install --save puppeteer

  2. 像这样编辑 package.json:

    { "dependencies": { "puppeteer": "^19.2.2" } }

  3. 将来自medium.com 的代码粘贴到 index.js 中: https://gist.githubusercontent.com/Alezco/b9b7ce4ec7ee7f208818e395225fcbbe/raw/8554acc8b311a10e272f5d1b98dce3400945bb00/index.js

  4. 部署 2 GB RAM,0-3 个实例,最长 500 秒超时

    构建或打开 URL 后出现以下错误:

    • 内部服务器错误
    • 找不到 Chromium(修订版 1056772)。如果 1. 您在运行脚本之前没有执行安装(例如 npm install)或 2. 您的缓存路径配置不正确(即:/workspace/.cache/puppeteer),就会发生这种情况。对于 (2),请在 https://pptr.dev/guides/configuration 查看我们关于配置 puppeteer 的指南。

    当我运行npm list时,同时安装了 webdriver 和 puppeteer。我怀疑这条路径有问题但我不知道它应该通向哪里。 然后我可以为 puppeteer.launch() 提供带有参数 executablePath 的参数,这可能会解决问题。 我尝试重新安装 puppeteer 和 changing configuration。没有运气。

【问题讨论】:

标签: node.js google-cloud-functions puppeteer


【解决方案1】:

我有完全相同的问题,它似乎与此有关 https://github.com/puppeteer/puppeteer/issues/9128

我使用的是 Firebase,在部署函数时无法完全控制构建过程,但我仍然可以访问构建日志。从上面的问题中,我意识到我需要处理缓存目录和 NPM 版本才能正常工作。

据我所知,问题在于构建步骤将 Puppeteer 所需的 Chrome 浏览器安装在用于实际功能的最终图像之外的缓存目录中。在这种情况下,错误消息更有意义,它找不到浏览器,因此它不起作用。

我在我的云函数中使用了 Node 14,它在构建步骤中使用了 NPM 6.14.17。根据您需要使用 NPM > 7 的问题,所以我升级了我的功能以使用 Node 16。

然后我在本地测试时添加了 https://pptr.dev/guides/configuration/#examples 中的 .puppeteerrc.cjs,它将在 Chrome 安装所在的位置添加一个 .cache 目录。部署云函数时必须忽略这一点,否则部署将因大小而失败。

在 firebase.json 添加:

"functions": {
  "ignore": [
    ".cache"
  ]
},

最后一步非常特定于 Firebase,我不确定这如何适用于您的构建步骤等。但这解决了我的问题,该问题与您的错误消息完全相同。因此,请仔细检查以下内容:

  1. 构建步骤中的 NPM 版本需要至少超过 v.7 - Node 16 应该这样做。
  2. .puppeteerrc.cjs 中指定的缓存目录

    看起来你使用的是旧的 Puppeteer 版本,我使用的是 19.3

【讨论】:

    【解决方案2】:

    我在 Google Cloud Function 中运行的 Puppeteer 项目中遇到了同样(非常误导)的错误。问题是 Function 在异步 Puppeteer 脚本完成之前完成(退出)。

    通过更改“await browser.close();”解决了这个问题到 Promise 并在 promise.then() 中创建响应消息。

    ...只是为了解决下一个问题。我的脚本没有按预期下载 csv 文件。虽然在本地工作......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      相关资源
      最近更新 更多