(узел: 13276) UnhandledPromiseRejectionWarning: Ошибка: невозможно принять диалог, который уже обработан - PullRequest
0 голосов
/ 13 февраля 2020

(узел: 13276) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI --unhandled-rejections=strict (см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (id отклонения: 2)

Привет, ребята, я получаю предупреждение выше из названия после того, как я вызываю эту функцию 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();
  });

Как мне избавиться от этого предупреждения? Спасибо!

1 Ответ

0 голосов
/ 13 февраля 2020

Ошибка говорит о том, что вы не можете сделать это дважды.

await dialog.accept();

Вы делаете это дважды, потому что регистрируете новое событие каждый раз, когда звоните delete_page.

* 1006. * Вы можете решить, что, делая это внутри вашей after функции, а не внутри delete_page.
page.on('dialog', async function(dialog) {
    await dialog.accept();
});

Вы также можете использовать функцию once, которая будет вызываться только ... один раз. Но вам нужно быть уверенным, что вы будете получать диалог при каждом вызове, поэтому вы не получите более одной регистрации.

page.once('dialog', async function(dialog) {
    await dialog.accept();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...