如何修复未处理的承诺拒绝警告:错误:读取 ETIMEDOUT 和未处理的承诺拒绝警告:错误:写入 EPROTO 错误



我正在使用axios和cheerio进行一些网络抓取。我很确定我写这个循环是错误的。关于使其异步的一些事情。但我最近开始了,我不明白这意味着什么。我也可能完全错了。

for (let i = 0; i < list.length; i++) {
axios.get(list[i].link).then((res) => {
const $ = cheerio.load(res.data);
var name = $('.header').find('.itemprop').text()
$('.knownfor-title').each((i, el) => {
var movie = $(el).find('img').attr('src')
var title = $(el).find('img').attr('title')
var link = 'https://www.imdb.com' + $(el).find(".knownfor-title-role").find('a').attr('href')
var data = {
name,
movie,
title,
link
}
writeStream.write(`${name}, ${movie}, ${title}, ${link} n` ); 
console.log(data)
})  
})
}

这是我得到的错误

(node:5293) UnhandledPromiseRejectionWarning: Error: read ECONNRESET
at TLSWrap.onStreamRead (internal/stream_base_commons.js:205:27)

(node:5293) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 512)

(node:5293) UnhandledPromiseRejectionWarning: Error: read ETIMEDOUT
at TLSWrap.onStreamRead (internal/stream_base_commons.js:205:27)
(node:5293) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 420)

你明白了

这应该是你的 .then(( 和 .catch(( 的公理的语法

const axios = require('axios');
// Make a request for a user with a given ID
axios.get('/user?ID=12345')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.then(function () {
// always executed
});

相关内容