(节点:13276)UnhandledPromiseRejectionWarning:未处理的承诺 拒绝。该错误是由抛出异步内部引起的 没有捕获块或拒绝承诺 未使用.catch()处理。终止未处理的节点进程 承诺拒绝,请使用CLI标志
--unhandled-rejections=strict
(请参见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝ID:2)
大家好,我两次调用此函数后,从标题中得到了警告:
async function delete_page(page, page_id) {
await page.goto('http://127.0.0.1:3000/page/' + page_id,
{ waitUntil: 'domcontentloaded' });
const navPromise = page.waitForNavigation();
page.on('dialog', async function(dialog) {
await dialog.accept();
});
await page.click("#delete-page-button");
await navPromise;
}
我在这里调用函数delete_page():
after(async function() {
this.timeout(0);
await logout(page);
await login(page, 'AdminTester', 'password');
await delete_page(page, 'test');
await delete_page(page, 'test2');
await logout(page);
await page.close();
});
如何摆脱该警告?谢谢!
答案 0 :(得分:0)
错误是说你不能做两次。
await dialog.accept();
您这样做两次,因为每次调用delete_page
时都要注册一个新事件。
您可以解决在after
函数内部而不是在delete_page
内部进行此操作的问题。
page.on('dialog', async function(dialog) {
await dialog.accept();
});
您还可以使用once
函数,该函数只会被调用一次。但是,您需要确保每次通话都会出现一个对话框,因此注册不会超过一个。
page.once('dialog', async function(dialog) {
await dialog.accept();
});