[英]Puppeteer cluster example throwing Error: Unable to get browser page
我在puppeteer-cluster文档中使用此示例
我在节点v10.15.3上运行它我尝试将无头属性和slowMo传递给puppeteer选项。
我希望代码能够注销并创建页面的屏幕截图,但是,会发生几个chrome实例启动但没有加载任何页面然后控制台挂起和错误:
(node:30826) UnhandledPromiseRejectionWarning: Error: Unable to get browser page
at Worker.<anonymous> (/Users/Starlord/Code/oppose/node_modules/puppeteer-cluster/dist/Worker.js:43:31)
at Generator.next (<anonymous>)
at fulfilled (/Users/Starlord/Code/oppose/node_modules/puppeteer-cluster/dist/Worker.js:4:58)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:30826) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 21)
(node:30826) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:30826) UnhandledPromiseRejectionWarning: Error: Unable to get browser page
at Worker.<anonymous> (/Users/Starlord/Code/oppose/node_modules/puppeteer-cluster/dist/Worker.js:43:31)
at Generator.next (<anonymous>)
at fulfilled (/Users/Starlord/Code/oppose/node_modules/puppeteer-cluster/dist/Worker.js:4:58)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:30826) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 22)
^Cinternal/process/per_thread.js:198
throw errnoException(err, 'kill');
^
Error: kill ESRCH
at process.kill (internal/process/per_thread.js:198:13)
at process.killChrome (/Users/Starlord/Code/oppose/node_modules/puppeteer/lib/Launcher.js:110:17)
at process.emit (events.js:189:13)
当库无法创建新的浏览器页面时,会发生此错误。 在多次尝试打开新的上下文/页面/浏览器(取决于您的设置)后,会抛出此错误。
调试日志
要获取有关导致错误的更多信息,可以查看调试日志 。 这将以调试模式启动应用程序并记录更多信息。 要进入调试模式,您需要使用环境变量DEBUG='puppeteer-cluster:*'
启动应用程序:
# Linux
DEBUG='puppeteer-cluster:*' node application.js
# Windows Powershell
$env:DEBUG='puppeteer-cluster:*';node application.js
问题
在您的情况下,调试日志显示(从您上面的评论中复制):
puppeteer-cluster:获取浏览器页面的工作程序错误(尝试:9),消息:this.browser.createIncognitoBrowserContext不是函数+ 660ms
这意味着,库不能使用createIncognitoBrowserContext
来创建新的上下文。 正如您已经确认的那样,因为您正在使用旧的木偶操作员安装。 要使用{ concurrency: Cluster.CONCURRENCY_CONTEXT }
设置,您必须至少使用版本1.5.0,就像引入上下文时一样。
固定
要解决此问题,请更新您的木偶操作员安装:
npm install puppeteer@latest
问题是我在puppeteer-cluster之前使用了puppeteer-pool,它使用的是旧版本的puppeteer。
我删除了puppeteer-pool并安装了puppeteer,它按预期工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.