木偶无法在无头模式下使用铬

时间:2019-09-26 18:01:19

标签: google-chrome raspberry-pi chromium puppeteer

我在运行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的推荐版本,但它也无法在无头模式下工作。

4 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。在过去的两天里,我一直在努力解决这个问题……使用headless: false运行似乎可以解决此问题,但是Pi需要运行X(我正在通过VNC运行会话)。 chromium-browser最新版本中的某些内容似乎是导致此问题的原因。我还没有找到一种简便的方法来降级到chromium-browser的先前稳定版本。希望有人会为此找到解决方案

答案 1 :(得分:0)

木偶只能保证与捆绑的铬版本一起使用(木偶而不是木偶芯)。因此,运行运行于74号铬的较旧版本的puppeteer可能会更好。

答案 2 :(得分:0)

我终于可以运行木偶了……但是不能在Raspbian破坏者上运行。这是我成功运行puppeteer的环境的详细信息:

  • Linux raspberrypi 4.19.66-v7 +#1253 SMP 2019年8月15日星期四11:49:46 BST 2019 armv7l GNU / Linux
  • Raspbian Stretch(2019-04-08-raspbian-stretch)
  • NodeJS v12.10.0和npm v6.10.3(来自nodesource)
  • puppeteer-core@1.11.0
  • 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”