我在运行 Raspbian 10 的 Raspberry pi 上使用 Puppeteer 1.20.0 和 Chromium-browser v74。在禁用无头模式下运行 Puppeteer 时,使用 Puppeteer Github 页面中的示例代码可以按预期工作,但是,如果我尝试在无头模式下运行它我收到此错误并且崩溃了。
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,这是 chromium 74 的推荐版本,但它在无头模式下也不起作用。
我终于能够运行 puppeteer...但不能在 Raspbian buster 上运行。以下是我成功运行 puppeteer 的环境详细信息:
chromium-browser
Chromium 72.0.3626.121 基于 Raspbian 构建,在 Raspbian 9.11 上运行我没有使用从
puppeteer
下载的chromium,我使用了raspbian附带的并添加了"executablePath"
配置,所以我只能使用"puppeteer-core"
Puppeteer 仅保证与其捆绑的 chromium 版本兼容(puppeteer 而不是 puppeteer-core)。因此,运行为 chromium 74 构建的旧版本 puppeteer 可能会有更好的运气。
Puppeter 附带兼容的 chromium.. 在 node_modules/puppeter/ 中查找 .local-chromium 如果找不到它我建议删除 node_modules 并点击“npm i puppeteer”