如何处理Puppeteer“错误:页面崩溃!”

时间:2020-09-18 15:36:48

标签: node.js puppeteer chromium digital-ocean droplet

我编写的刮板可以在PC上完美运行,这是一个运行node.js v14.4.0的Windows操作系统。

但是,当我尝试在Ubunto机器Digital Ocean Droplet上运行它时,对于某些页面,出现以下错误: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 PC上正常工作。

1 个答案:

答案 0 :(得分:0)

我添加了我在网上找到的所有相关内存配置:

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注意,我只是将Droplet从1G RAM升级到2G。 那就成功了。

刮刮一个简单的网站所花费的时间超过1G,我感到很奇怪,所以我猜Puppeteer需要大量资源来运行。

更新 我进行了其他页面美化,但是这次与服务器使用所有内存有关。因此,我从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'
]

现在很稳定。 因此,我认为这需要仔细使用,并在不需要时将其删除。