簡體   English   中英

Heroku 上的 Puppeteer 錯誤:找不到 Chromium

[英]Puppeteer error on Heroku: Could not find Chromium

我對部署/托管 Node 應用程序和 Puppeteer 有點陌生。

但是,當我嘗試使用 Puppeteer 時,我的應用程序在 Heroku 上遇到了問題。

完整的錯誤是:


Error: Could not find Chromium (rev. 1056772). This can occur if either

2022-11-10T06:44:07.938983+00:00 app[web.1]:  1. you did not perform an installation before running the script (e.g. `npm install`) or

2022-11-10T06:44:07.938983+00:00 app[web.1]:  2. your cache path is incorrectly configured (which is: /app/.cache/puppeteer).

2022-11-10T06:44:07.938983+00:00 app[web.1]: For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration.

2022-11-10T06:44:07.938984+00:00 app[web.1]:     at ChromeLauncher.resolveExecutablePath (/app/node_modules/puppeteer-core/lib/cjs/puppeteer/node/ProductLauncher.js:120:27)

2022-11-10T06:44:07.938984+00:00 app[web.1]:     at ChromeLauncher.executablePath (/app/node_modules/puppeteer-core/lib/cjs/puppeteer/node/ChromeLauncher.js:166:25)

2022-11-10T06:44:07.938985+00:00 app[web.1]:     at PuppeteerNode.executablePath (/app/node_modules/puppeteer-core/lib/cjs/puppeteer/node/PuppeteerNode.js:162:105)

2022-11-10T06:44:07.938985+00:00 app[web.1]:     at Object.<anonymous> (/app/index.js:29:145)

2022-11-10T06:44:07.938985+00:00 app[web.1]:     at Module._compile (node:internal/modules/cjs/loader:1159:14)

2022-11-10T06:44:07.938986+00:00 app[web.1]:     at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)

2022-11-10T06:44:07.938986+00:00 app[web.1]:     at Module.load (node:internal/modules/cjs/loader:1037:32)

2022-11-10T06:44:07.938986+00:00 app[web.1]:     at Module._load (node:internal/modules/cjs/loader:878:12)

2022-11-10T06:44:07.938986+00:00 app[web.1]:     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)

2022-11-10T06:44:07.938987+00:00 app[web.1]:     at node:internal/main/run_main_module:23:47

我的 index.js 代碼是:


const puppeteer = require('puppeteer-extra')

const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha')

const StealthPlugin = require('puppeteer-extra-plugin-stealth')

const { executablePath } = require('puppeteer')

const axios = require('axios')

//pupeteer plugins

puppeteer.use(

    RecaptchaPlugin({

        provider: {

            id: '2captcha',

            token: 'XXX'

        },

        visualFeedback: true //colorize reCAPTCHAs (violet = detected, green = solved)

    })

)

puppeteer.use(StealthPlugin())

//pupeteer crawl

try {

    puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: true, executablePath: executablePath(), ignoreHTTPSErrors: true }).then(async browser => {

        console.log('Running tests..')

        const page = await browser.newPage()

        await page.goto('https://bot.sannysoft.com')

        await page.setViewport({ width: 1680, height: 857 })

        await page.waitForTimeout(5000)

        await page.screenshot({ path: 'testresult.png', fullPage: true })

        await browser.close()

        console.log(`All done, check the screenshot. ✨`)

    })

} catch (error) {

    console.error(error);

}

這些是我在 Heroku 中的構建包:

在此處輸入圖像描述

我已經與這些斗爭了幾天並嘗試了一切:(

謝謝!!

我嘗試添加必要的標志:

args: ['--no-sandbox', '--disable-setuid-sandbox']

還有構建包: https://github.com/jontewks/puppeteer-heroku-buildpack

這些是人們在其他問題線程中提到的常見解決方案。

我實際上今天才遇到這個問題。 分析發生這種情況的原因:Puppeteers new v19 更新了.cache的存儲方式。 這會導致構建和部署出現問題。 因此,如果您的構建找不到.cache ,那么它就找不到 chromium 並崩潰。

你的兩個選擇是告訴你的程序運行 v18 版本的 puppeteer 或者簡單地將這個配置放在與你的 index.js 相同的目錄中

project-directory/.puppeteerrc.cjs

const {join} = require('path');

/**
 * @type {import("puppeteer").Configuration}
 */
module.exports = {
  // Changes the cache location for Puppeteer.
  cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};

確保調用它.puppeteerrc.cjs然后卸載然后重新安裝 puppeteer 並將.cache添加到你的.gitignore

如果這仍然不起作用,您可以在以下位置嘗試其他配置選項:
https://pptr.dev/guides/configuration/

木偶操縱者不面臨這個問題:17.1.3

前幾天我遇到了這個問題。 我在 Windows Server 2022(一個 Vultr 實例)上使用 Puppeteer 構建/打包了一個 Electron 應用程序,然后嘗試在 Windows 11 家用筆記本電腦上運行構建的可執行文件。 我嘗試了官方建議的使用.puppeteerrc.cjs文件的解決方案。 它不起作用。

唯一對我有用的解決方案是降級到 Puppeteer 18.1.0。 希望對某人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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