Node.js Axios,请求:无法忽略套接字挂起(EconReset)错误
我正在使用axios和node.js上的库开发一个web抓取软件。这是代码的一部分 问题是,我无法通过Node.js Axios,请求:无法忽略套接字挂起(EconReset)错误,node.js,request,axios,Node.js,Request,Axios,我正在使用axios和node.js上的库开发一个web抓取软件。这是代码的一部分 问题是,我无法通过错误:套接字挂起错误。当发生其他错误时,例如,错误:getaddrinfo ENOTFOUND,错误:请求失败,状态代码404,错误:请求失败,状态代码403,错误:无法验证第一个证书,脚本将通过这些错误并继续下一个URL,不会出现问题。但是,似乎某些站点导致了错误:套接字挂起错误,该错误使脚本退出,退出代码为0(成功) 我不知道错误周围发生了什么,为什么唯一的错误会导致脚本结束,也不知道详细的
错误:套接字挂起
错误。当发生其他错误时,例如,错误:getaddrinfo ENOTFOUND
,错误:请求失败,状态代码404
,错误:请求失败,状态代码403
,错误:无法验证第一个证书
,脚本将通过这些错误并继续下一个URL,不会出现问题。但是,似乎某些站点导致了错误:套接字挂起错误,该错误使脚本退出,退出代码为0(成功)
我不知道错误周围发生了什么,为什么唯一的错误会导致脚本结束,也不知道详细的错误信息或出错的退出代码。如何防止脚本因错误而退出?坦斯克
异步函数getData(url,rank=“-1”){
var-obj;
让source=CancelToken.source();
设置超时(()=>{
source.cancel();
}, 20000);
等待axios
.get(url,{cancelToken:source.token,超时:20000})
。然后((响应)=>{
如果(response.status==200){
const html=response.data;
const$=cheerio.load(html);
obj={
等级:等级,
url:url,
title:title=$('title').text(),
关键词:keywords=$(“meta[name='keywords'])。attr('content'),
description:description=$(“meta[name='description'])。attr('content'),
h1:Array.from($('h1')).map(a=>$(a.text()),
h2:Array.from($('h2')).map(a=>$(a.text()),
状态:0
}
}
})
.catch((错误)=>{
if(error.code==“ECONNRESET”){
log(“发生超时”);
//返回;
}
});
如果(!obj){
obj={
等级:等级,
url:url,
现状:1
}
}
返回obj;
}
//批量调用上述函数,如下所示
//我怀疑下面的代码有问题,但以防万一
... // 这里有一些代码
承诺=[];
websitelists_obj[“url”].forEach((项目,i)=>{
承诺,推动(
函数(){
返回新承诺((解决、拒绝)=>{
日志(“已启动:”,项)
data=getData(网站列表(网址)][i]、网站列表(排名)][i])
决心(
数据
)
})
.then((数据)=>{console.log(“已完成:”,项);返回数据;})
}
)
});
... // 这里有一些代码
while(承诺.长度){
array=promises.splice(0,20).map(f=>f());
结果=等待承诺。全部(数组);
obj=obj.concat(结果);
}