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

AWS Lambda中Protocol error (Page.navigate): Target closed问题排查咨询

AWS Lambda中Puppeteer出现Protocol error (Page.navigate): Target closed错误的排查与解决

错误详情

{
    "errorType": "TargetCloseError",
    "errorMessage": "Protocol error (Page.navigate): Target closed",
    "name": "TargetCloseError",
    "cause": {
        "errorType": "ProtocolError",
        "errorMessage": "",
        "name": "ProtocolError",
        "stack": [
            "ProtocolError",
            "    at <instance_members_initializer> (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:42:14)",
            "    at new Callback (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:46:16)",
            "    at CallbackRegistry.create (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:86:26)",
            "    at Connection._rawSend (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:208:26)",
            "    at CdpCDPSession.send (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:62:33)",
            "    at navigate (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Frame.js:164:51)",
            "    at CdpFrame.goto (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Frame.js:142:17)",
            "    at CdpFrame. (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:108:27)",
            "    at CdpPage.goto (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:724:43)",
            "    at exports.handler (/var/task/index.js:38:18)"
        ]
    },
    "stack": [
        "TargetCloseError: Protocol error (Page.navigate): Target closed",
        "    at CallbackRegistry.clear (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:139:36)",
        "    at CdpCDPSession._onClosed (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/CDPSession.js:97:25)",
        "    at #onClose (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Connection.js:285:21)",
        "    at WebSocket. (/var/task/node_modules/puppeteer-core/lib/cjs/puppeteer/node/NodeWebSocketTransport.js:57:30)",
        "    at callListener (/var/task/node_modules/ws/lib/event-target.js:290:14)",
        "    at WebSocket.onClose (/var/task/node_modules/ws/lib/event-target.js:220:9)",
        "    at WebSocket.emit (node:events:517:28)",
        "    at WebSocket.emitClose (/var/task/node_modules/ws/lib/websocket.js:260:10)",
        "    at Socket.socketOnClose (/var/task/node_modules/ws/lib/websocket.js:1272:15)",
        "    at Socket.emit (node:events:517:28)"
    ]
}

初步排查方向

  • 检查CloudWatch日志,查看Lambda执行过程中是否有内存不足、超时或Chrome启动失败的前置错误
  • 检查Lambda运行时版本与Puppeteer、Chrome二进制文件的兼容性:比如Node.js版本是否符合Puppeteer要求,避免版本不匹配导致的通信异常

进一步排查与解决方法

1. 内存与超时配置

Lambda默认内存配置较低,运行Chrome/Puppeteer需要足够资源:

  • 将Lambda内存调整至至少512MB(建议1GB以上),内存提升同时会增加CPU配额,减少Chrome崩溃概率
  • 延长Lambda超时时间至至少30秒,避免页面加载未完成时函数被终止

2. Puppeteer启动参数优化

添加以下参数确保Chrome在Lambda环境稳定运行:

const browser = await puppeteer.launch({
  headless: 'new', // 使用新版无头模式,兼容性更好
  args: [
    '--no-sandbox',
    '--disable-setuid-sandbox',
    '--disable-dev-shm-usage', // 解决Lambda临时空间不足问题
    '--disable-gpu',
    '--single-process',
    '--no-zygote'
  ],
  timeout: 60000 // 延长浏览器启动超时时间
});

3. 页面加载错误处理

在page.goto时添加超时和错误捕获,避免目标页面异常导致连接中断:

try {
  await page.goto('目标URL', {
    waitUntil: 'networkidle2', // 等待网络空闲再继续
    timeout: 30000 // 页面加载超时时间
  });
} catch (error) {
  console.error('页面加载失败:', error);
  // 必要时关闭浏览器并抛出错误
  await browser.close();
  throw error;
}

4. Chrome二进制文件兼容性

  • 确保使用的Puppeteer版本对应的Chrome二进制文件与Lambda环境兼容,可使用chrome-aws-lambda库自动适配Lambda的Chrome版本
  • 避免手动打包Chrome二进制文件,优先使用适配Lambda的Puppeteer封装库

5. 资源清理

在Lambda函数结束前,确保关闭浏览器实例,避免资源泄漏:

exports.handler = async (event) => {
  let browser;
  try {
    browser = await puppeteer.launch(/* 配置 */);
    // 业务逻辑
  } catch (error) {
    console.error('执行失败:', error);
    throw error;
  } finally {
    if (browser) {
      await browser.close();
    }
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:24:50