我的Puppeteer脚本以无头模式运行,并且正在超时。
我不确定到底是怎么了。该脚本在本地运行良好,但是当我以无头模式运行时,它总是会超时。
我已经在线阅读了有关脚本无法加载外部JavaScript源的信息?还有其他人遇到这个问题并能够提供帮助吗?
这是我的Puppeteer实例的设置功能:
setUpPuppeteer: async () => {
const headless = process.env.NODE_ENV === "production";
const browser = await pupeteer.launch({
headless,
devtools: true,
args: ['--no-sandbox' ]
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage(); // Create new instance of puppet
page.on('error', err => {
logger.error('Puppeteer error.', err);
});
page.setDefaultNavigationTimeout(10000);
if (process.env.NODE_ENV === 'production') {
await page.setRequestInterception(true); // Optimize (no stylesheets, images)...
page.on('request', request => {
if (['image', 'stylesheet'].includes(request.resourceType())) {
request.abort();
} else {
request.continue();
}
});
}
return {browser: context, page};
},
答案 0 :(得分:3)
setUpPuppeteer: async () => {
const headless = process.env.NODE_ENV === "production";
const browser = await pupeteer.launch({
headless: true,
devtools: true,
args: [
'--ignore-certificate-errors',
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-accelerated-2d-canvas',
'--disable-gpu'
]
});
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage(); // Create new instance of puppet
page.on('error', err => {
logger.error('Puppeteer error.', err);
});
page.setDefaultNavigationTimeout(10000);
if (process.env.NODE_ENV === 'production') {
await page.setRequestInterception(true); // Optimize (no stylesheets, images)...
page.on('request', request => {
if (['image', 'stylesheet'].includes(request.resourceType())) {
request.abort();
} else {
request.continue();
}
});
}
return {browser: context, page};
},