Да, есть ограничения в зависимости от уровня доступа, который вы используете при открытии файлов. Вы можете использовать _getmaxstdio
, чтобы найти пределы и _setmaxstdio
, чтобы изменить пределы.
** Обновлен для работы с puppeteer v1.4.x
Если все, что вам нужно, это «зарегистрировать прогресс страницы. Оценить на консоли», тогда просто
const page = await browser.newPage();
page.on('console', consoleObj => console.log(consoleObj.text()));
И используйте console.log
в page.evaluate
как обычно, больше никаких зависимостей не требуется.
Также см. этот приятный твик для удаления нескольких раздражающих предупреждений из журнала.
Многие ответы, представленные ранее, больше не работают сегодня. Также одна вещь, которая может быть очень раздражающей на некоторых страницах, это «предупреждающие» сообщения, которые загрязняют вывод. Один из способов исправить это - отфильтровать по типу сообщения. Следующий код помогает уменьшить шум и работает с текущими версиями Puppeteer:
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.on('console', consoleMessageObject => function (consoleMessageObject) {
if (consoleMessageObject._type !== 'warning') {
console.debug(consoleMessageObject._text)
}
});
await page.goto('https://google.com');
const result = await page.evaluate(() => {
console.log('Browser scope.');
return 'Normal scope.';
});
console.log(result)
Мне нравится ответ @ Vaviloff , но вы будете регистрировать весь объект ConsoleMessage, когда вам может понадобиться только текст. Таким образом, я лично использую следующее:
const EOL = require('os').EOL;
const _page = await browser.newPage();
_page.on('console', _fCleanLog);
function _fCleanLog(ConsoleMessage) {
console.log(ConsoleMessage.text + EOL);
}