Puppeteer 错误:未下载 Chromium 修订版
Posted
技术标签:
【中文标题】Puppeteer 错误:未下载 Chromium 修订版【英文标题】:Puppeteer Error: Chromium revision is not downloaded 【发布时间】: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 一起使用。
任何帮助将不胜感激。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于Puppeteer 错误:未下载 Chromium 修订版的主要内容,如果未能解决你的问题,请参考以下文章
Puppeteer 的 chromium 打开时出现错误并停止 puppeteer 脚本
Puppeteer:如何在 ec2 服务器上安装 puppeteer