Puppeteer-获取未处理的PromiseRejection警告:管道中未处理的promise拒绝



我试图执行下面的代码,但它在管道中抛出了未处理的承诺拒绝警告。在当地,它运行良好,没有任何问题。

日志错误:进程";3224";找不到。(节点:836(未处理的PromiseRejection警告:#(节点:836(未处理的PromiseRejection警告:未处理的promise rejection。此错误源于在没有catch块的异步函数内部抛出,或拒绝未使用.catch((处理的promise。要在未处理的prompt拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝id:1((节点:836([DEP0018]不推荐使用警告:不推荐使用未经处理的承诺拒绝。将来,未处理的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();
})();

使用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可能会在未来终止进程,我很害怕看到这种情况发生

相关内容

最新更新