You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Puppeteer升级后报错‘Cannot extract value when objectId is given’求助

Puppeteer升级后出现"Cannot extract value when objectId is given"错误的解决思路

问题描述

在Ubuntu环境运行Puppeteer时触发错误:Cannot extract value when objectId is given,代码未做任何修改,仅升级了Puppeteer版本后出现该问题。

环境对比

可正常运行环境

  • Ubuntu: 20.04.3
  • Node: 14.17.5
  • puppeteer: 9.1.1
  • puppeteer-extra: 3.3.4
  • puppeteer-extra-plugin-stealth: 2.11.1

无法运行环境

  • Ubuntu: 22.10
  • Node: 18.7.0
  • puppeteer: 20.2.1
  • puppeteer-extra: 3.3.6
  • puppeteer-extra-plugin-stealth: 2.11.2

错误栈信息

Error: Cannot extract value when objectId is given
at assert (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/util/assert.js:28:15)
at valueFromRemoteObject (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/util.js:242:28)
at createClientError (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/util.js:122:16)
at CDPPage._CDPPage_handleException (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js:894:94)
at /root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js:186:100
at /root/bot/node_modules/puppeteer-core/lib/cjs/third_party/mitt/index.js:3:248
at Array.map ()
at Object.emit (/root/bot/node_modules/puppeteer-core/lib/cjs/third_party/mitt/index.js:3:232)
at CDPSessionImpl.emit (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js:87:22)
at CDPSessionImpl._onMessage (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js:441:18)
Node.js v18.7.0
Exit!

相关代码片段

const puppeteer = require('puppeteer');

const withBrowser = async (fn) => {
  const browser = await puppeteer.launch({
    headless: true,
    args: ['--no-sandbox', '--disable-setuid-sandbox', '--proxy-server=zproxy.lum-superproxy.io:22225', '--window-size=' + vWidth + ',' + vHeight],
    ignoreDefaultArgs: ['--disable-extensions', '--disable-default-apps', '--disable-component-extensions-with-background-pages']
  });
  try {
    return await fn(browser);
  } finally {
    await browser.close();
  }
}

const withPage = (browser) => async (fn) => {
  const page = await browser.newPage();
  await page.setViewport({ width: vWidth, height: vHeight, deviceScaleFactor: 1});
  try {
    return await fn(page);
  } finally {
    await page.close();
    await browser.close();
  }
}

const results = await withBrowser(async (browser) => {
    return withPage(browser)(async (page) => {
      try {
response = await page.goto(pageUrl);
    .catch((err) => {
      console.error(err);
    });

解决思路与方法

  • 排查插件兼容性:新版Puppeteer(20.x)与puppeteer-extra、stealth插件的版本适配可能存在问题。可尝试降级Puppeteer到19.x/18.x版本,或等待puppeteer-extra插件发布适配20.x版本的更新。
  • 自定义页面异常处理:错误触发于页面异常的默认解析逻辑,新版Puppeteer对远程对象的断言更严格。可以通过监听page.on('error')事件,直接记录原始错误信息,避免默认的错误提取逻辑触发断言失败。
  • 调整启动参数:新版Puppeteer对headless模式有调整,将headless: true改为headless: 'new'测试;同时检查ignoreDefaultArgs是否禁用了影响错误处理的必要参数,尝试移除部分忽略项。
  • 临时版本回退:若无法快速适配,暂时回退到旧环境的版本组合(Puppeteer 9.1.1 + Node 14.x),保证业务正常运行,后续再跟进版本适配。
  • 调试触发场景:启用Puppeteer调试日志(设置DEBUG=puppeteer:*),或在page.goto前后添加详细日志,定位页面抛出的具体异常,针对性处理页面端的问题。

内容的提问来源于stack exchange,提问作者user17929112

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:47:54