Puppeteer - 无法读取未定义的 属性 'executablePath'

Puppeteer - Cannot read property 'executablePath' of undefined

无论我尝试了什么,我总是得到 executablePath is undefined。不幸的是,google 上没有太多关于此的信息。如果有人能让我知道在哪里可以更深入地解决这个错误,那就太好了。 revisionInfo 返回未定义。

错误

BrowserFetcher {
  _product: 'chrome',
  _downloadsFolder: '/var/www/node_modules/puppeteer/.local-chromium',
  _downloadHost: 'https://storage.googleapis.com',
  _platform: 'linux' }
TypeError: Cannot read property 'executablePath' of undefined
    at demo1 (/var/www/filename.js:10:36)

源代码

const puppeteer = require('puppeteer');

const demo1 = async () => {
  try {
    const browserFetcher = puppeteer.createBrowserFetcher();
    console.log(browserFetcher);
    const revisionInfo = await browserFetcher.download('970485');
    const browser = await puppeteer.launch({
      headless: false,
      executablePath: revisionInfo.executablePath,
      args: ['--window-size=1920,1080', '--disable-notifications'],
    });
    const page = await browser.newPage();
    await page.setViewport({
      width: 1080,
      height: 1080,
    });
    await page.goto('https://example.com', {
      waitUntil: 'networkidle0',
    });

    await page.close();
    await browser.close();
  } catch (e) {
    console.error(e);
  }
};

demo1();

根据您的错误消息,问题出在这一行

      executablePath: revisionInfo.executablePath,

其中 revisionInfo 未定义,这意味着这不会为您提供所需的数据:

    const revisionInfo = await browserFetcher.download('970485');

如果您确实需要特定的 executablePath,您需要确保 revisionInfo 获得您想要的值。

否则,您可以删除行 executablePath: revisionInfo.executablePath, 并让 puppeteer 使用其默认的 chromium 浏览器。

看两件事

  1. 如果您安装了 apt chromium-browser,请删除它
  2. 尝试运行并使用 x86 服务器而不是基于 ARM 的服务器(AWS 的 t4g 实例)进行安装

其中一个解决了我的问题。代码还是一样。