在 Windows 上测试我的项目后,我将它部署到基于 Ubuntu 的 VM 上,这就是 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();
}
结果:
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)
}
我不明白我什至如何开始调查这个问题
最佳答案
不确定,如果这对您的情况有帮助-
我有 Typescript,带有 compilerOptions lib: ["es2020"]
它抛出了这个错误。将其更改为 lib: ["es2017"]
为我解决了这个问题。我什至不确定,为什么它会这样影响它。我猜,当你通过导入 import { fn } from "somewhere"
来获得一个函数时但是该函数以某种方式从类实例中导出 - 它失去了它的绑定(bind) this
.
否则像这样导入有效
// Works
import Puppeteer, { Browser, PDFOptions } from "puppeteer";
browser = await Puppeteer.launch({});
// Doesn't work
import { launch, Browser, PDFOptions } from "puppeteer";
browser = await launch({});
关于node.js - Puppeteer 启动器错误结果未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69494700/