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'