为什么我会收到以下警告,以及如何消除它们?
警告:
(节点:26771)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):错误:协议错误(Runtime.callFunctionOn):目标已关闭。
(节点:26771)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。
代码:
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("https://dn.se", { waitUntil: "domcontentloaded" });
var output = page.evaluate(() => {
return;
});
await browser.close();
})();
环境:
答案 0 :(得分:1)
您需要await
page.evaluate()
,因为它会返回一个承诺:
var output = await page.evaluate(() => {
return;
});
确保您正在使用process.on('unhandledRejection')
来侦听未处理的承诺拒绝,并在发生此类事件时正常关闭浏览器:
process.on('unhandledRejection', (reason, p) => {
console.error('Unhandled Rejection at: Promise', p, 'reason:', reason);
browser.close();
});
您的最终代码应该看起来像这样:
'use strict';
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
process.on('unhandledRejection', (reason, p) => {
console.error('Unhandled Rejection at: Promise', p, 'reason:', reason);
browser.close();
});
await page.goto('https://dn.se', { waitUntil: 'domcontentloaded' });
var output = await page.evaluate(() => {
return;
});
await browser.close();
})();