我在运行Raspbian 10的Raspberry pi上使用带有Chromium-browser v74的Puppeteer 1.20.0,使用Puppeteer Github页面中的示例代码可以在无头的情况下运行Puppeteer时按预期工作,但是,如果尝试在无头模式,我得到这个错误,它崩溃了。
UnhandledPromiseRejectionWarning:错误:导航失败,因为 浏览器已断开连接。
我的代码:
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox'],
executablePath: '/usr/bin/chromium-browser',
headless: true
});
const page = await browser.newPage();
await page.goto('https://youtube.com');
await page.screenshot({path: 'example.png'});
await browser.close();
})();
相同的代码可以在另一台Debian 10机器上正常运行,无论是无头还是无头。他们俩都运行Puppeteer 1.20.0,唯一的区别是Debian计算机运行的是Google-chrome 77,而Raspbian运行的是Chromium-browser 74。
编辑:
我还尝试了puppeteer-core 1.13.0版本,这是铬74的推荐版本,但它也无法在无头模式下工作。
答案 0 :(得分:0)
我遇到了同样的问题。在过去的两天里,我一直在努力解决这个问题……使用headless: false
运行似乎可以解决此问题,但是Pi需要运行X(我正在通过VNC运行会话)。 chromium-browser
最新版本中的某些内容似乎是导致此问题的原因。我还没有找到一种简便的方法来降级到chromium-browser
的先前稳定版本。希望有人会为此找到解决方案
答案 1 :(得分:0)
木偶只能保证与捆绑的铬版本一起使用(木偶而不是木偶芯)。因此,运行运行于74号铬的较旧版本的puppeteer可能会更好。
答案 2 :(得分:0)
我终于可以运行木偶了……但是不能在Raspbian破坏者上运行。这是我成功运行puppeteer的环境的详细信息:
chromium-browser
铬72.0.3626.121 基于Raspbian构建,在Raspbian 9.11上运行我没有使用从puppeteer
下载的Chrome,而是使用了raspbian附带的铬,并添加了"executablePath"
配置,所以我只能使用"puppeteer-core"
答案 3 :(得分:0)
Puppeter 带有兼容的 Chromium..in node_modules/puppeter/ 寻找 .local-chromium 如果你没有找到它我建议删除 node_modules 并点击“npm i puppeteer”