簡體   English   中英

將 Puppeteer 與 Electron 一起使用會引發“找不到瀏覽器修訂版”錯誤。 使用節點運行良好

[英]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_modulespackage-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM