Неожиданное сообщение об ошибке - PullRequest
0 голосов
/ 03 мая 2018

Я использую кукловод с хромом без головы, чтобы выполнить следующий скрипт https://gist.github.com/mbierman/5b3e671fa4e848eec899ff486d0cdc26

Что делает то, что я хочу, однако я получаю следующие ошибки:

(node:1374) UnhandledPromiseRejectionWarning: Error: Navigation Timeout Exceeded: 30000ms exceeded
    at Promise.then (/Users/bierman/Documents/Applications/bin/arris/node_modules/puppeteer/lib/NavigatorWatcher.js:73:21)
    at <anonymous>
(node:1374) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:1374) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
+ duration=32

Эти проблемы связаны с моим сценарием кукловода или с распределением кукловода? Я думаю, что у меня установлена ​​последняя версия.

1 Ответ

0 голосов
/ 04 мая 2018

Код выглядит так, как будто он нуждается в рефакторинге с правильным async-await:

  • process.on("unhandledRejection") должно быть в верхней части файла.
  • page.setViewport следует ожидать.
  • page.goto может использовать параметр {waitUntil: 'load'} для ожидания загрузки страницы.
  • page.click следует ожидать.
  • page.on('dialog') должен вызываться при создании страницы.
  • browser.close следует ожидать.

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

  • Загружается ли http://192.168.0.1/login.asp в браузер?
  • Это за прокси?

Если вы попросите и попытаетесь решить одну за другой, у вас будет рабочий код.

Подробнее об асинхронном ожидании и обещаниях здесь . Существуют и другие доступные ресурсы, но лучше, если вы узнаете о природе асинхронности, прежде чем работать с ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...