Puppeteer 错误:导航失败,因为浏览器已断开连接

2024-02-03

我在 Google App Engine 上使用 puppeteer 和 Node.JS

每当我在应用程序引擎上运行 puppeteer 时,我都会遇到一条错误消息

导航失败,因为浏览器已断开连接!

这在本地环境中工作正常,所以我猜测这是应用程序引擎的问题。

const browser = await puppeteer.launch({
    ignoreHTTPSErrors: true,
    headless: true,
    args: ["--disable-setuid-sandbox", "--no-sandbox"],
});

这是我的应用程序引擎的 app.yaml 文件

runtime: nodejs12

env: standard

handlers:
  - url: /.*
    secure: always
    script: auto

- 编辑 -

当我添加时它起作用--disable-dev-shm-usage争论,但总是超时。这是我的代码。

const browser = await puppeteer.launch({
  ignoreHTTPSErrors: true,
  headless: true,
  args: [
    "--disable-gpu",
    "--disable-dev-shm-usage",
    "--no-sandbox",
    "--disable-setuid-sandbox",
    "--no-first-run",
    "--no-zygote",
    "--single-process",
  ],
});
const page = await browser.newPage();

try {
  const url = "https://seekingalpha.com/market-news/1";
  const pageOption = {
    waitUntil: "networkidle2",
    timeout: 20000,
  };

  await page.goto(url, pageOption);
} catch (e) {
  console.log(e);
  await page.close();
  await browser.close();
  return resolve("error at 1");
}

try {
  const ulSelector = "#latest-news-list";
  await page.waitForSelector(ulSelector, { timeout: 30000 });
} catch (e) {
  // ALWAYS TIMEOUTS HERE!
  console.log(e);
  await page.close();
  await browser.close();
  return resolve("error at 2");
}
...

看来问题出在应用程序引擎的内存容量上。

当内存不足以应对傀儡师爬行时,

它会自动生成另一个实例。

但是,新创建的实例具有不同的 puppeteer 浏览器。

因此,结果是Navigation failed because browser has disconnected.

解决方案只是升级应用程序引擎实例,使其可以通过单个实例处理爬行作业。

默认实例是F1,内存为256M,所以我升级到F4,内存为1GB,然后就不再显示错误消息了。

runtime: nodejs12

instance_class: F4

handlers:
  - url: /.*
    secure: always
    script: auto
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Puppeteer 错误:导航失败,因为浏览器已断开连接 的相关文章

  • 将最新的 terser-webpack-plugin 与 Webpack5 一起使用

    根据这个链接 简洁的文档 https webpack js org plugins terser webpack plugin terseroptions如果您使用最新的 Webpack 5 则无需安装 Terser 插件 因为它已包含在
  • Google App Engine 的用户 API 限制太多?

    看看 Google App Engine API 尽管它有很多出色的功能 但用户 API 却极其有限 看来你只能对拥有 Google 帐户 使用 OpenID 帐户或通过一些 OAuth 功夫 与 Facebook 帐户握手等 的人进行身份
  • Mongoose 在结果的 _id 字段中返回“new ObjectId”

    当我尝试查询时 结果包含 id其中包含 new ObjectId 的字段 如何避免这种 new ObjectId 并仅将哈希值包含为字符串 由于此问题 将数据作为 JSON 响应发送回失败 下面是一个基本的demo 我的查询代码 book
  • 护照 Facebook 注销无法使用

    我试图实现 Passport Facebook 我在 server js 中的代码如下所示 用户点击 Facebook 登录时使用的路由 router get auth facebook passport authenticate face
  • nodejs module.js:340 错误: 找不到模块

    我将nodejs安装在C Program Files x86 nodejs 然后我创建了一个 js 文件并将其保存在桌面中 以便在控制台中输出 hello world console log hello world 当我尝试从命令提示符运行
  • 如何获取node.js中调用函数的文件路径?

    以下是来自三个文件的一些示例代码 foo js var myFunc require myFunc function foo myFunc message bar js var myFunc require myFunc function
  • +process 中的加号是 Node.js 域文档中的拼写错误吗?

    在本文档中 http nodejs org api domain html http nodejs org api domain html 这一行出现 var PORT process env PORT 1337 加号是拼写错误吗 如果不是
  • NESTJS AWS Lambda 和 Sequelize 连接池

    由于我已经给出了下面代码片段中提到的池参数 因此是否有必要在每次 lambda 调用后关闭连接 这个 aws lambda 函数应该每分钟触发一次 池参数仅足以关闭连接吗 export const databaseProviders pro
  • 在 Google App Engine 数据模型中进行“OR”查询

    我想进行这样的查询 从地址 或年龄 的人中选择名称 这在GAE模型中可能吗 所有事物都包含 AND 闭包 而不是 OR 我如何使用 JDO JPA Objectify 来做到这一点 提前致谢 数据存储上没有 OR 运算 您必须执行两个单独的
  • 如何在 sails.js 中维护多个 API 版本

    有人有关于在使用 sails js 时维护 API 的多个版本的想法吗 想象一个简单的例子 例如 Request GET api v1 catVids min view count 10000 Response video title to
  • 如何使用 Node.js 异步服务多个 QBWC 客户端

    这个想法是使用 Node js 实现 QBWC Web 服务 它可以以异步方式服务多个传入请求 目前我正在研究qbws https github com johnballantyne qbws 这是 QuickBooks Desktop W
  • 当我尝试连接本地主机时出现 ERR_SSL_PROTOCOL_ERROR

    我开始研究 Node js 并尝试将 ionic 应用程序与我创建的后端 NodeJS 应用程序连接 但出现此错误 OPTIONS https localhost 3000 插入 https localhost 3000 insert净 E
  • 在本地主机上设置 (https) SSL 以进行流星开发

    如何创建自签名 SSL 证书以在 mac 10 9 上的本地服务器上使用 我需要我的本地主机作为https localhost 我正在使用 linkedin API 这里解释了需要本地主机上的 ssl 的功能 https developer
  • 将数据从 javascript/html 页面发送到 Express NodeJS 服务器

    我正在使用 html5 和 javascript 开发 cordova 应用程序 该架构如下 电话应用程序向服务器请求某些内容 服务器请求 firebird 数据库 数据库回答服务器 服务器将所请求的数据提供给电话应用程序 在 html5
  • Javascript 充满好奇心

    当我调用这个 Promise 时 输出与函数调用的顺序不匹配 这 then出现在 catch 即使承诺 then之后被呼叫 这是什么原因呢 const verifier a b gt new Promise resolve reject g
  • 如何安装 Node 和 NPM 以便不必使用 sudo?

    我正在尝试在 Ubuntu 14 04 计算机上设置 Node js 和 NPM 但遇到了一些问题 在我的第一次尝试中 我不断得到EACCES尝试安装软件包时出错 有时甚至使用sudo 所以我彻底卸载了node和npm 现在我正在尝试找出如
  • 在原子操作中测试和递减?

    我刚刚发现了一个恼人的错误 它基本上是一个竞争条件 为了便于论证 我们假设一个非常简单的文档结构 例如 id XXX amount 100 集合中存在数百个这样的文档 并且由多个编写器访问 这些编写器有效地尝试将数量降低任何值 但绝不会低于
  • Node.js 护照会话 Cookie 域

    我正在使用 node js Passport 并试图弄清楚如何在父域上设置 cookie 以便它可用于子域 用户登录 Domain com 然后用户访问 Sub Domain com 他应该仍然处于登录状态 如何在父域上设置 cookie
  • 授权标头格式错误;区域“us-east-1”是错误的;期待“eu-central-1”

    使用 Node JS 和以下配置文件 accessKeyId XXX secretAccessKey XXXX 区域 eu central 1 签名版本 v4 我仍然收到此错误消息 就好像 aws sdk 尝试访问 us east 1 Re
  • 从另一台服务器读取 Node.js 中的大文件

    我有两台相互通信的服务器 Server1 向 Server2 请求文件的部分内容 并将收到的数据存储到一个文件中 Server2 应该接收每个请求并创建一个流管道传输数据 假设服务器2中存储的文件 目录 如下 bigfile gz bigf

随机推荐