我编写的刮板可以在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上正常工作。
答案 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'
]
现在很稳定。 因此,我认为这需要仔细使用,并在不需要时将其删除。