在AWS Lambda中使用Puppeteer时,可能会遇到导航超时问题。这是因为Lambda环境的网络连接速度可能较慢,而Puppeteer默认的导航超时时间较短。
解决这个问题的方法是通过设置Puppeteer的导航超时时间来延长等待时间。下面是一个示例代码:
const puppeteer = require('puppeteer');
exports.handler = async (event, context) => {
// 设置导航超时时间为30秒
const browser = await puppeteer.launch({ timeout: 30000 });
const page = await browser.newPage();
try {
await page.goto('https://example.com', { waitUntil: 'networkidle0' });
// 进行其他操作...
// 关闭浏览器
await browser.close();
return {
statusCode: 200,
body: 'Success',
};
} catch (error) {
console.error('Error:', error);
// 关闭浏览器
await browser.close();
return {
statusCode: 500,
body: 'Error',
};
}
};
在上面的代码中,我们使用puppeteer.launch()
方法来创建一个浏览器实例,并通过timeout
选项设置导航超时时间为30秒。然后,我们使用puppeteer.launch()
方法创建一个新的页面。
在page.goto()
方法中,我们使用waitUntil: 'networkidle0'
选项来等待页面加载完成。这意味着页面在没有网络连接的情况下至少500毫秒内没有新的网络请求时,认为页面加载完成。
在捕获到错误后,我们打印错误消息,并使用browser.close()
方法关闭浏览器实例。
最后,根据成功或失败的情况,我们返回不同的状态码和响应体。
请注意,以上代码仅为示例,您可能需要根据您的具体需求进行适当的修改。