【问题标题】:Puppeteer Error: Chromium revision is not downloadedPuppeteer 错误:未下载 Chromium 修订版
【发布时间】:2019-05-28 13:26:40
【问题描述】:

我使用了npm i puppeteer,如Documentation 中所述 我收到以下错误:

(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();
})();

也在文档中:

注意:当您安装 Puppeteer 时,它会下载最新版本的 Chromium(~170MB Mac、~282MB Linux、~280MB Win),该版本保证可以与 API 一起使用。

任何帮助将不胜感激。

【问题讨论】:

    标签: node.js npm chromium puppeteer


    【解决方案1】:

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

    node node_modules/puppeteer/install.js
    

    【讨论】:

    • 这个解决方案解决了我的问题。谢谢!
    • 我的本地模块使用 puppeteer-core 而不是 puppeteer,但解决方案的效果相同。
    【解决方案2】:

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

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

    正如@vsync 指出的,这只适用于linux

    【讨论】:

    • 这个答案是专门针对linux的,这对很多开发者来说是没用的,因为windows操作系统还是很占优势的
    • 但是适用于 windows 的 ubuntu bash 会让它变得有用
    • @tramada Still Linux ;)
    • npm v7 不再有--unsafe-perm 或等效的github.com/npm/feedback/discussions/121
    【解决方案3】:

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

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

    node node_modules/puppeteer/install.js
    

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

    【讨论】:

      【解决方案4】:

      对于 Linux:

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

      $sudo apt install -y chromium-browser

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

      $哪个铬浏览器

      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();
          })();
      

      【讨论】:

        【解决方案5】:

        确认这里提出的解决方案几乎可以工作。这是我的设置。 Ubuntu 16。

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

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

        【讨论】:

        • 这很有帮助。看完这篇终于有进步了!
        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          我是这样解决的:

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

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

          傀儡版本:1.16.0

          【讨论】:

            【解决方案8】:

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

            用于安装 Chrome

            sudo apt install -y chromium-browser
            

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

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

            【讨论】:

              【解决方案9】:

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

              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
              

              就是这样。它对我有用。

              【讨论】:

              • 如果文件夹存在,您可以检查路径和文件,或者您可以重命名并执行步骤。
              【解决方案10】:

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

              对我来说路径如下:

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

              【讨论】:

                【解决方案11】:

                在 Windows 上可以全局安装

                npm i puppeteer --g
                

                【讨论】:

                  【解决方案12】:

                  我是这样解决的

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

                  只需让ignoreDefaultArgs: ['--disable-extensions'] 就可以了

                  来源: Troubleshoot

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-05-12
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-10-09
                    • 2020-11-26
                    相关资源
                    最近更新 更多