Node.js 木偶演员错误:未下载Chromium修订版

Node.js 木偶演员错误:未下载Chromium修订版,node.js,npm,chromium,puppeteer,Node.js,Npm,Chromium,Puppeteer,我使用了npm I木偶演员,如 我得到了以下错误: (节点:2066)未处理的PromisejectionWarning:错误:未下载Chromium版本。运行“npm安装”或“纱线安装” 在启动器处。启动 当我尝试这个例子时(也来自文档): 文件中还包括: 注意:安装Puppeter时,它会下载Chromium的最新版本(~170MB Mac、~282MB Linux、~280MB Win),该版本保证与API一起使用 任何帮助都将不胜感激。经过多次尝试,我终于找到了答案: 正如@vsync所

我使用了npm I木偶演员,如 我得到了以下错误:

(节点:2066)未处理的PromisejectionWarning:错误:未下载Chromium版本。运行“npm安装”或“纱线安装” 在启动器处。启动

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

文件中还包括:

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


任何帮助都将不胜感激。

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


正如@vsync所指出的,这只适用于linux,我是这样解决的:

const browser=wait puppeter.launch({executablePath:“./node_modules/puppeter/.local chromium/win64-656675/chrome win/chrome.exe”})

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

适用于linux的木偶演员版本:1.16.0

1-必须使用以下命令安装chromium浏览器:

$sudo apt安装-y chromium浏览器

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

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

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

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

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

对我来说,路径如下:

/home/Nightwing/node_模块/puppeter/Launcher.js


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

我只是在进行了大量搜索并尝试了大多数建议后,通过手动安装Chromium来解决问题:

node node_modules/puppeteer/install.js

默认情况下,
puppeter
模块将运行其安装脚本(
node install.js
)。然而,在我的例子中,我在我的
~/.npmrc
文件中启用了
ignorescripts=true
,因此它从未执行过

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

node node_modules/puppeteer/install.js

要检查:
node\u modules/puppeter/.local chromium/linux-/
现在应该存在。

这是因为您的系统上没有安装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
我在
节点\u modules/puppeter/
文件夹中看到,发现没有任何
.local chromium
文件夹,因此我手动创建了此路径

node_modules/puppeteer/.local-chromium/win64-<your_chrome_version>/chrome-win
node\u模块/puppeter/.local chromium/win64-/chrome-win
然后我从(你的chrome版本)下载了chrome浏览器,并将其复制到路径中,以便你需要在这个url中看到chrome.exe

node_modules/puppeteer/.local-chromium/win64-<your_chrome_version>/chrome-win/chrome.exe
node\u modules/puppeter/.local chrome/win64-/chrome win/chrome.exe

就这样。这对我来说很管用。

这个答案是专门针对linux的,这使得它对许多开发人员来说毫无用处,因为windows操作系统仍然占据主导地位,但ubuntu bash for windows将使它成为主流usefull@tramada仍然是Linux;)npm v7不再有
--unsafe perm
或同等产品,这非常有用。读了这篇文章,终于有了一些进步!很多。你救了我一天。这个解决方案解决了我的问题。谢谢我的本地模块使用了
puppeter核心
而不是
puppeter
,但解决方案的工作原理是相同的。如果文件夹存在,您可以检查路径和文件,或者您可以重命名它并执行步骤。谢谢!你真的救了我的命!!!!!
node_modules/puppeteer/.local-chromium/win64-<your_chrome_version>/chrome-win
node_modules/puppeteer/.local-chromium/win64-<your_chrome_version>/chrome-win/chrome.exe