这个错误通常是由于Puppeteer在Lambda环境中超时而导致的。解决方法是增加默认的超时时间,并适当优化和调整Puppeteer的配置。
以下是一个示例Lambda函数,可以设置Puppeteer的启动选项和超时时间:
const puppeteer = require('puppeteer-core');
async function lambdaHandler(event, context) {
const options = {
args: [
'--disable-gpu',
'--single-process',
'--no-zygote',
'--no-sandbox',
],
executablePath: '/usr/bin/google-chrome',
headless: true,
}
const browser = await puppeteer.launch(options)
const page = await browser.newPage()
// 设置最大超时时间为15秒
await page.setDefaultNavigationTimeout(15000)
// 在这里添加您的Puppeteer代码
// ...
await browser.close()
}
exports.handler = lambdaHandler;
这个示例函数使用了几个常见的Puppeteer配置选项,包括禁用GPU、使用固定谷歌浏览器位置以及启用Headless模式。它还设置了一个默认的导航超时时间,以便确保Puppeteer代码不会因为超时而中断。
如果您在执行Lambda函数时仍然遇到“Error Target Closed or Timeout”错误,请检查是否存在其他因素或资源受限等问题,例如内存使用过高或网络连接等问题,并相应地进行优化和调整。