Puppeteer 错误:必须为“puppeteer-core”指定“executablePath”或“channel”

Jul*_*ski 24 node.js puppeteer

我正在尝试制作一个简单的 Puppeteer 项目。我当前的代码只是一个测试。但这不起作用。

import bypass from './captcha/captchaBypasser.js';
import {createRequire} from "module";

const require = createRequire(import.meta.url);

const puppeteer = require('puppeteer-extra');
const hidden = require('puppeteer-extra-plugin-stealth')

test()

async function test() {

  // Launch sequence
  puppeteer.use(hidden())
  const browser = await puppeteer.launch({
    args: ['--no-sandbox',],
    headless: false,
    ignoreHTTPSErrors: true
  })

  const page = await browser.newPage()
  await page.setViewport({
    width: 1920,
    height: 1280,
    deviceScaleFactor: 1,
  });

  //Go to page
  await page.goto('https://google.com/', {
    waitUntil: 'networkidle0',
  });
}
Run Code Online (Sandbox Code Playgroud)

我四处寻找解释,但似乎我是唯一遇到此错误的人

        throw new Error(message);
              ^

Error: An `executablePath` or `channel` must be specified for `puppeteer-core`
    at assert (C:\Users\Julian\Desktop\project\node_modules\puppeteer-core\lib\cjs\puppeteer\util\assert.js:28:15)
    at ChromeLauncher.launch (C:\Users\Julian\Desktop\project\node_modules\puppeteer-core\lib\cjs\puppeteer\node\ChromeLauncher.js:69:36)
    at PuppeteerNode.launch (C:\Users\Julian\Desktop\project\node_modules\puppeteer-core\lib\cjs\puppeteer\node\PuppeteerNode.js:154:105)
    at PuppeteerExtra.launch (C:\Users\Julian\Desktop\project\node_modules\puppeteer-extra\dist\index.cjs.js:128:41)
    at async test (file:///C:/Users/Julian/Desktop/project/test.js:21:19)

Node.js v18.12.0
Run Code Online (Sandbox Code Playgroud)

我期待 Puppeteer 实例弹出并访问 google.com。相反,我得到了一个错误。

小智 43

看起来 puppeteer-core 现在是executablePath强制性的。

尝试这个:

import bypass from './captcha/captchaBypasser.js';

import {createRequire} from "module";
const require = createRequire(import.meta.url);

const puppeteer = require('puppeteer-extra');
const hidden = require('puppeteer-extra-plugin-stealth')

// require executablePath from puppeteer
const {executablePath} = require('puppeteer')

test()

async function test() {

  // Launch sequence
  puppeteer.use(hidden())
  const browser = await puppeteer.launch({
    args: ['--no-sandbox',],
    headless: false,
    ignoreHTTPSErrors: true,

    // add this
    executablePath: executablePath(),
  })

  const page = await browser.newPage()
  await page.setViewport({
    width: 1920,
    height: 1280,
    deviceScaleFactor: 1,
  });

  // Go to page
  await page.goto('https://google.com/', {
    waitUntil: 'networkidle0',
  });
}
Run Code Online (Sandbox Code Playgroud)