request库https+proxy环境下Error解决

nodejs中,request库在https+proxy环境下产生Error: ESOCKETTIMEDOUT。

更多分类文章:

Python | Linux | 大数据 | 数据库 | Git | Nodejs | Golang | 电脑技巧 | 计算机技术

错误描述

{ Error: ESOCKETTIMEDOUT
at ClientRequest.<anonymous> (D:\codeProject\nodejs-webCrawler\webCrawler-nodeCrawler\node_modules\request\request.js:812:19)
at Object.onceWrapper (events.js:312:19)
at emitNone (events.js:105:13)
at ClientRequest.emit (events.js:207:7)
at Socket.emitTimeout (_http_client.js:720:34)
at Object.onceWrapper (events.js:312:19)
at emitNone (events.js:110:20)
at Socket.emit (events.js:207:7)
at Socket._onTimeout (net.js:401:8)
at ontimeout (timers.js:488:11) code: 'ESOCKETTIMEDOUT', connect: false }

调用处代码

// in tunnel-agent.js
connectReq.once('connect', onConnect)
//...
function onConnect(){
   pending.request.onSocket(socket) // pending.request is an instance of ClientRequest
}
​
// in _http_client.js
function onSocket(socket){
   req.emit('socket',socket); // request.js got the 'socket' event.
}
​
// in request.js
self.req.on('socket', function(socket) {
   var setReqTimeout = function() {
       self.req.setTimeout(timeout, function () {
       if (self.req) {
         self.abort()
         var e = new Error('ESOCKETTIMEDOUT')
         e.code = 'ESOCKETTIMEDOUT'
         e.connect = false
         self.emit('error', e)
       }
     })
   }
}

解决方法

添加如下代码:

connectReq.setTimeout(options.timeout || 15000, function(){
   connectReq.abort();
});

原文链接:request库https+proxy环境下Error解决 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值