Как справиться с ошибкой Puppeteer «Ошибка: сбой страницы!»

#node.js #puppeteer #chromium #digital-ocean #droplet

#node.js #puppeteer #chromium #digital-ocean #капля

Вопрос:

Скребок, который я написал, отлично работает на моем ПК, ОС Windows, которая работает node.js v14.4.0.

Но когда я попытался запустить его на Digital Ocean Droplet, Ubunto machine, я получаю для некоторых страниц следующую ошибку: Page crashed! с небольшим количеством информации.

Вот код для печати ошибки:

 const handleClose = async (msg) =>{
        console.log(msg)
        page.close();
        browser.close();
        process.exit(1);
}

process.on("uncaughtException", (reason, p) => {
        const a = `Possibly Unhandled Exception at: Promise , ${p}, reason: , ${reason}`
        handleClose(a);
});
  

Как мне справиться с этим?
И что может вызвать это? поскольку это прекрасно работает на моем ПК с Windows.

Комментарии:

1. Какой размер капли? Вероятно, вам нужно пойти дальше.

2. Это минимальный размер, 1G RAM 1vCPU. Но разве этого не будет достаточно для удаления 1 простого веб-сайта? Я закрываю все страницы после завершения, поэтому одновременно открывается только 1 страница. И droplet выполняет только этот процесс.

Ответ №1:

Я добавил все конфигурации памяти, которые я нашел в Интернете и связанные:

 const args = [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-size=1366,768',
        '--unlimited-storage',
        '--full-memory-crash-report',
        '--disable-dev-shm-usage',
        '--force-gpu-mem-available-mb',
        '--disable-gpu'
    ]
  

Но это не помогло.

Благодаря pguardiario note я просто обновляю Droplet с 1G RAM до 2G. И это сделало свое дело.

Мне кажется странным, что для очистки простого веб-сайта требуется более 1G, поэтому я думаю, что Puppeteer требует много ресурсов для запуска.

ОБНОВЛЕНИЕ У меня был сбой страницы anther, но на этот раз это было связано с тем, что сервер использовал всю память. Итак, я удалил все эти аргументы из Puppeteer:

 '--unlimited-storage',
'--full-memory-crash-report',
'--disable-dev-shm-usage',
'--force-gpu-mem-available-mb',
'--disable-gpu'
  

И где остались только базовые:

 const args = [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-size=1366,768'
]
  

И теперь он стабилен.
Итак, я думаю, это нужно использовать осторожно и удалять, если это действительно не нужно.