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

问题描述

我编写的刮板可以在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上正常工作。

解决方法

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

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','--disable-gpu'

只剩下基本的:

const args = [
        '--no-sandbox',768'
]

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