Я пытался реализовать веб-парсер, который будет использовать данные, извлеченные из MongoDB, для создания массива URL-адресов для периодического парсинга с помощью кукольника. Я пытаюсь заставить мою функцию парсера периодически очищать, используя setIntervalAsyn c.
Вот мой код прямо сейчас, который выдает "UnhandledPromiseRejectionWarning: TypeError: невозможно преобразовать undefined или null в объект в Function.values. .. "
кукловод. js
async function scrape(array){
// initialize for loop here
let port = '9052'
if(localStorage.getItem('scrapeRunning')=='restart'){
clearIntervalAsync(scrape)
localStorage.setItem('scrapeRunning') == 'go'
}else if(localStorage.getItem('scrapeRunning') != 'restart'){
/// Puppeteer scrapes urls in array here ///
}
сервер. js
app.post('/submit-form', [
// Form Validation Here //
], (req,res)=>{
async function submitForm(amazonUrl,desiredPrice,email){
// Connect to MongoDB and update entry or create new entry
// with post request data
createMongo.newConnectToMongo(amazonUrl,desiredPrice,email)
.then(()=>{
// Set local variable that will alert scraper to clearIntervalAsync///
localStorage.setItem('scrapeRunning','restart');
// before pulling the new updated mongoDB data ...
return createMongo.pullMongoArray();
})
.then((result)=>{
// and start scraping again with the new data
puppeteer.scrape(result)
})
submitForm(req.body.amazonUrl, req.body.desiredPrice,req.body.email);
}
}
createMongo.pullMongoArray()
.then((result)=>{
setIntervalAsync(puppeteer.scrape, 10000, result);
})
В настоящее время парсер запускается, как ожидалось, после запуска сервера и держит 10 секунд между окончанием очистки и ее повторным началом. После отправки сообщения коллекция MongoDB обновляется данными сообщения, создается элемент localStorage, но функция очистки сходит с рельсов и выдает ошибку typeError. Я не уверен, что происходит, и пробовал несколько способов исправить это (включая оставление setIntervalAsyn c и clearIntervalAsyn c внутри блока кода почтового запроса), но пока безуспешно. Я новичок в кодировании и крайне неопытен с асинхронным кодом, поэтому, если у кого-то есть опыт работы с такого рода проблемами и он может пролить свет на то, что происходит, я был бы очень признателен! 1015