puppeteer.launch
- это асинхронная функция, которая возвращает Promise
. Это означает, что вы должны await
для этого в вашей функции async
или поместить следующий код в .then()
.
Поскольку вы хотите использовать командную строку Node.js, вы не можете напрямую await
для нее. Есть несколько вариантов:
Вариант 1: введите свой код в .then()
:
$ node
Welcome to Node.js v12.1.0.
Type ".help" for more information.
> const options = {headless: false, ignoreHTTPSErrors: true, args: ['--start-maximized'], defaultViewport: null, slowMo: 150};
...
> const puppeteer = require('puppeteer');
undefined
> const browserPromise = puppeteer.launch(options);
undefined
> const pagePromise = browserPromise.then(browser => { return browser.newPage(); });
undefined
> pagePromise.then(page => { page.goto('http://stackoverflow.com'); });
Promise { <pending> }
Вариант 2 (подходит для отладки, но не пытайтесь использовать его в своем реальном коде ): сохранить результаты обещания в глобальном объекте и повторно использовать.
> puppeteer.launch(options).then(browser => { global.browser = browser; });
Promise { <pending> }
Подождите некоторое время, пока обещание не разрешится и глобальный объект не будет назначен, затем продолжите:
> global.browser.newPage().then(page => { global.page = page; });
Promise { <pending> }
Подождите снова, затем продолжайте:
> global.page.goto('http://stackoverflow.com')
Promise { <pending> }