Puppeteer -Getting UnhandledPromiseRejectionWarning:管道中未处理的承诺拒绝

Posted

技术标签:

【中文标题】Puppeteer -Getting UnhandledPromiseRejectionWarning:管道中未处理的承诺拒绝【英文标题】:Puppeteer -Getting UnhandledPromiseRejectionWarning: Unhandled promise rejection in Pipelines 【发布时间】:2020-11-28 11:35:14 【问题描述】:

我正在尝试执行以下代码,但它会在管道中引发未处理的承诺拒绝警告。在本地它可以正常工作,没有任何问题。

日志 错误:找不到进程“3224”。 (节点:836)UnhandledPromiseRejectionWarning:# (节点:836) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:1) (节点:836)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

以下是JS代码:

const puppeteer = require('puppeteer');

(async () => 
    const browser = await puppeteer.launch(
      //defaultViewport: null,
      headless:false,
      slowMo: 500,
      timeout: 10000
      //slowMo: 500,
      //devtools: true,
    );

  const page = await browser.newPage();
  await page.goto('https://www.google.com', waitUntil: 'networkidle2');
  await page.waitFor(10000);

  await browser.close();
)();

【问题讨论】:

【参考方案1】:

使用async/await的缺陷是在发生错误时需要try/catch你的异步调用,而不是使用常规的.then().catch()

碰巧开发者忘记捕捉错误,所以 node.js 输出UnhandledPromiseRejectionWarning: # (node:836) UnhandledPromiseRejectionWarning: Unhandled promise rejection

我不确定错误是什么,请使用以下代替调试:

(async () => 
    try 
        const browser = await puppeteer.launch(
            //defaultViewport: null,
            headless: false,
            slowMo: 500,
            timeout: 10000
            //slowMo: 500,
            //devtools: true,
        );

        const page = await browser.newPage();
        await page.goto('https://www.google.com', 
            waitUntil: 'networkidle2'
        );
        await page.waitFor(10000);

        await browser.close();
     catch (err) 
        console.log(err);
    
)();

我在某处看到 node.js 可能会在未来终止该进程,如果发生这种未处理的承诺,我很害怕看到这种情况发生啊哈

【讨论】:

在 catch 语句 url 中捕获以下错误:'ws://127.0.0.1:49201/devtools/browser/b7b8d93b-5876-4151-8abd-df38a78bd996', _req: null, [Symbol(kCapture )]: false , type: 'error', message: 'read ECONNRESET', error: Error: read ECONNRESET 哎呀我不确定这个错误是什么。我会发一个新帖子,在中间我会将这个帖子标记为已解决

以上是关于Puppeteer -Getting UnhandledPromiseRejectionWarning:管道中未处理的承诺拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Puppeteer:如何在 ec2 服务器上安装 puppeteer

Puppeteer 的 chromium 打开时出现错误并停止 puppeteer 脚本

Puppeteer 类型 node_modules/puppeteer/lib/types"' 没有导出成员 'Cookie'

是否可以直接向 Puppeteer 获取 Puppeteer 音频馈送和/或输入音频?

puppeteer截图

Puppeteer:无法播放视频