- Я пытаюсь загрузить .ts файлы разных видео с помощью Puppeteer.
- Я делаю это, отслеживая все запросы .ts (которые я вызываю сам), а затем сохраняя / добавляя всеих ответы.
- Однако иногда
UnhandledPromiseRejectionWarning: Error: Evaluation failed: Object
происходит, что указывает на page.evaluate
, откуда никуда.Хотя я подозреваю, что это в основном происходит, когда обрабатывается множество файлов .ts. - Кроме того, аналогично, когда существует большой файл с большим количеством файлов .ts, возникает
UnhandledPromiseRejectionWarning: Error: Protocol error (Network.getResponseBody): Request content was evicted from inspector cache
.
Любые предложения о том, как я мог -
Решить проблему page.evaluate
.
Очистить инспекторакэшируйте, когда я закончу с конкретными запросами / данными, и заставьте Puppeteer сохранить большое количество файлов .ts.
/* This whole code is inside an async function */
/* .... code for finding array ts .... */
let requests = [], prs = [];
page.on('request', req => {
if(req.url().endsWith('.ts')){
requests.push(req);
}
});
/*
ts[i].ts contains all the links to a stream/video's .ts files
ts[i].filename contains the name of that video
*/
for (i = 0; i < ts.length; i++) {
for(const ele of ts[i].ts){
// Not writing await is on purpose; for saving all the pending promises
let x = page.evaluate(async (link, file) => {
// jQuery is included in the page itself
return $.ajax({
url : link,
headers : {"custom" : file}
});
}, ele, ts[i].filename);
prs.push(x);
}
// This makes request.response() be filled
await Promise.all(prs);
for(let req of requests){
let res = await req.response().buffer();
let fname = req.headers().customHeader;
// Data written to relevant file
fs.appendFileSync(fname, res);
}
prs = [];
requests = [];
}