[英]Using Puppeteer with Electron throws 'Could not find browser revision' error. Runs fine with node
我已經嘗試使用 Puppeteer v5.4.0、v5.4.1 和 v5.5.0、Windows 10/MacOS 和 Node v12/v14.0.1/v15.0.3 來嘗試讓 Puppeteer 在 Z0DF2DA9CF88450E6704F8356DA45ZD4 中運行。
在 React 應用程序的主進程中執行這樣的簡單puppeteer.launch()
:
const puppeteer = require('puppeteer');
(async function(){
const browser = await puppeteer.launch();
})();
返回這個:
Uncaught (in promise) Error: Could not find browser revision 818858. Run "PUPPETEER_PRODUCT=firefox npm install" or "PUPPETEER_PRODUCT=firefox yarn install" to download a supported Firefox browser binary.
at ChromeLauncher.launch (Launcher.js:120)
at async http:/localhost:8080/main.js:61295
我試過運行PUPPETEER_PRODUCT=firefox yarn install
,在launch()
方法中設置executablePath
,刪除node_modules
和package-lock.json
,但這些解決方案似乎都不起作用。 在設置路徑的情況下,它返回一個ENOENT
錯誤。 不過,很奇怪,編寫一個小腳本並通過node test.js
運行它似乎工作正常。
根據this ,嘗試以下操作之一:
sudo npm install puppeteer --unsafe-perm=true --allow-root
或者:
對於 linux:
1-您必須使用以下命令安裝 chromium 瀏覽器:
$sudo apt install -y 鉻瀏覽器
2-您必須使用以下命令獲取鉻的可執行路徑:
$哪個鉻瀏覽器
3-將可執行路徑作為啟動function的參數:
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();
})();
經過幾個小時的修修補補,這就是我的想法:
不要從主進程調用,而是在渲染進程中設置 function 並調用它,如下所示:
/* main.js - Renderer Process */
ipcMain.on('spawn-browser', (event, arg) => {
const browser = await puppeteer.launch();
// Your other functions...
});
在主進程中,您可以調用如下內容:
require('electron').ipcRenderer.send('spawn-browser', args);
哪個有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.