Puppeteer 启动器错误结果未定义

Dan*_*na 3 deployment ubuntu node.js puppeteer

在 Windows 上测试我的项目后,我将其部署到基于 Ubuntu 的虚拟机上,这就是 Puppeteer 行为让我感到困惑的地方。我确实安装了所有必需的依赖项,但我有一种感觉,我的错误不一定是由于缺乏依赖项以及更多有关配置问题而引起的。

功能图:

  async initPuppeteerBrowser() {
    if (
      this.puppeteerBrowser === null ||
      (await this.puppeteerBrowser.pages()).length === 0
    ) {
      this.puppeteerBrowser = await launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'] });
    }

    return await this.puppeteerBrowser.newPage();
  }
Run Code Online (Sandbox Code Playgroud)

结果是:

err: {
      "type": "TypeError",
      "message": "Cannot read properties of undefined (reading '_launcher')",
      "stack":
          TypeError: Cannot read properties of undefined (reading '_launcher')
              at launch (/root/dev/logoex-server/node_modules/puppeteer/lib/cjs/puppeteer/node/Puppeteer.js:125:21)
              at CorporationsScraper.initPuppeteerBrowser (/root/dev/logoex-server/dist/aid/scraper/corporations.scraper.js:33:66)
              at CorporationsScraper.corporationIterator (/root/dev/logoex-server/dist/aid/scraper/corporations.scraper.js:54:37)
              at processTicksAndRejections (node:internal/process/task_queues:96:5)
    }
Run Code Online (Sandbox Code Playgroud)

我不明白我该如何开始讨论这个问题

Wis*_*ish 9

不确定,这是否对您的情况有帮助 - 我有 Typescript,带有编译器选项lib: ["es2020"],它引发了此错误。改变它来lib: ["es2017"]为我解决这个问题。我什至不确定,为什么会产生这样的影响。我想,当你通过导入来获得一个函数时,import { fn } from "somewhere"但该函数是以某种方式从类实例导出的 - 它会失去它的绑定this

否则像这样导入就可以了

// Works
import Puppeteer, { Browser, PDFOptions } from "puppeteer";
browser = await Puppeteer.launch({});

// Doesn't work
import { launch, Browser, PDFOptions } from "puppeteer";
browser = await launch({});
Run Code Online (Sandbox Code Playgroud)

  • 哇谢谢你!我将导入从 `import { launch } from "puppeteer";` 更改为 `import * as puppeteer from "puppeteer";` 并修复了它。我想如果你在“true”处有“esModuleInterop”,“import Puppeteer from “puppeteer”;”也可以工作。 (4认同)