Puppeteer Error: Chromium revision is not downloaded

Puppeteer Error: Chromium revision is not downloaded

我按照 Documentation 中的说明使用了 npm i puppeteer 我收到以下错误:

(node:2066) UnhandledPromiseRejectionWarning:错误:未下载 Chromium 修订版。 运行 "npm install" 或 "yarn install" 在 Launcher.launch

当我尝试这个例子时(也来自文档):

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});
  await browser.close();
})();

也在文档中:

Note: When you install Puppeteer, it downloads a recent version of Chromium (~170MB Mac, ~282MB Linux, ~280MB Win) that is guaranteed to work with the API.

如有任何帮助,我们将不胜感激。

经过多次尝试终于找到了答案here:

sudo npm install puppeteer --unsafe-perm=true --allow-root

正如@vsync 指出的那样,这仅适用于 linux

我是这样解决的:

const browser = await puppeteer.launch({ executablePath: "./node_modules/puppeteer/.local-chromium/win64-656675/chrome-win/chrome.exe"});

注意路径中的 win64-656675,如果您使用的是不同的操作系统,则需要指向相应的文件夹。

人偶版本:1.16.0

对于 linux:

1- 您必须使用此命令安装 chromium 浏览器:

$sudo apt install -y chromium-browser

2- 您必须使用此命令获取 chromium 的可执行路径:

$which chromium-browser

3-将可执行路径作为启动函数的参数:

   const puppeteer = require('puppeteer-core');
   (async () => {
   const browser = await puppeteer.launch({
   executablePath: '/usr/bin/chromium-browser',
   headless: false
    });
    const page = await browser.newPage();
    await page.goto('https://google.com');
    await page.screenshot({path: 'example.png'});

    await browser.close();
    })();

确认此处提供的解决方案几乎有效。这是我的设置。 Ubuntu16.

然后从命令行安装 chromium 浏览器:

    const browser = await puppeteer.launch({
        executablePath: "/usr/bin/chromium-browser",
        args: ['--no-sandbox']
    });

如果有人再次遇到这个问题。然后转到 node_modules 文件夹,然后进入 puppeteer 并在 lib 中找到 launch.js 打开相同的文件并搜索 executablepath 然后将其空值更改为您的 chrome 或 chromium 所需的路径。

我的路径如下:

/home/Nightwing/node_modules/puppeteer/Launcher.js

在我的例子中,它在删除 node_modules 文件夹和 package-lock.json 文件并再次 运行 npm install 后工作。

经过大量搜索并尝试了大部分建议后,我才通过手动安装 Chromium 解决了这个问题:

node node_modules/puppeteer/install.js

默认情况下,puppeteer 模块将 运行 其安装脚本 (node install.js)。但是,就我而言,我在 ~/.npmrc 文件中启用了 ignore-scripts=true,因此它从未被执行。

在这种情况下,您必须自己 运行 命令:

node node_modules/puppeteer/install.js

要检查:node_modules/puppeteer/.local-chromium/linux-<your_chrome_version>/ 现在应该存在了。

这是因为您的系统上没有安装 Chrome。

用于安装 Chrome

sudo apt install -y chromium-browser

然后添加一个可执行路径。

const browser = await puppeteer.launch({
  executablePath: '/usr/bin/chromium-browser',
  headless: false
});

经过几个小时的谷歌搜索和阅读许多评论和讨论,尝试了几种方法,最终我用这个解决方案解决了问题。

OS: Windows 10
node: 14.16.1
puppeteer: 7.0.1

我在node_modules/puppeteer/文件夹中看到,发现没有任何.local-chromium文件夹,所以我手动创建了这个路径

node_modules/puppeteer/.local-chromium/win64-<your_chrome_version>/chrome-win

然后我从 this link (your_chrome_version) 下载了 chromium 浏览器,然后将其复制到路径中,以便您需要在 url 中看到 chrome.exe

node_modules/puppeteer/.local-chromium/win64-<your_chrome_version>/chrome-win/chrome.exe

就是这样。它对我有用。

在 Windows 上可以作为全局安装

npm i puppeteer --g

我是这样解决的

  const browser = await puppeteer.launch({
      headless: true,
      ignoreDefaultArgs: ['--disable-extensions'], // this made it work for now
  });

通过 ignoreDefaultArgs: ['--disable-extensions'] 完成技巧

来源: Troubleshoot