Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Axios,请求:无法忽略套接字挂起(EconReset)错误_Node.js_Request_Axios - Fatal编程技术网

Node.js Axios,请求:无法忽略套接字挂起(EconReset)错误

Node.js Axios,请求:无法忽略套接字挂起(EconReset)错误,node.js,request,axios,Node.js,Request,Axios,我正在使用axios和node.js上的库开发一个web抓取软件。这是代码的一部分 问题是,我无法通过错误:套接字挂起错误。当发生其他错误时,例如,错误:getaddrinfo ENOTFOUND,错误:请求失败,状态代码404,错误:请求失败,状态代码403,错误:无法验证第一个证书,脚本将通过这些错误并继续下一个URL,不会出现问题。但是,似乎某些站点导致了错误:套接字挂起错误,该错误使脚本退出,退出代码为0(成功) 我不知道错误周围发生了什么,为什么唯一的错误会导致脚本结束,也不知道详细的

我正在使用axios和node.js上的库开发一个web抓取软件。这是代码的一部分

问题是,我无法通过
错误:套接字挂起
错误。当发生其他错误时,例如,
错误: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(结果); }