【问题标题】:Node.Js error for socket Hangup套接字挂断的 Node.Js 错误
【发布时间】:2017-05-31 12:40:44
【问题描述】:

我的问题如下:

abc lambda 触发另一个 lambda(named : khjj) 对我来说一切都很好,唯一的问题是在 cloudwatch 日志中,甚至在本地如果我运行 abc lambda 函数来触发 khjj lambda,我在请求后收到套接字挂断错误。

我的 abc lambda 从 dynamo db 表中读取一个数据并逐行触发 khjj 函数,abc lambda 中的代码是:

    var sendData = module.exports = {
     data : function(){
    return new Promise(function (resolve, reject) {
     arrayData = []

  // here table.get is a function in the same file for getting the 
    // data from the dynamo db table
    table.get("Table1").then(function(response){
    _.forEach(response, function(data){
      var obj = {};
      obj.value1 = data.value1;
      obj.value2 = data.value2;  
      obj.value3 = data.value3;
      obj.value4 = data.value4;
      obj.value5 = data.value5;
      obj.value6 = data.value6;
      obj.value7 = data.value7;
      arrayData.push(obj)
    })
    Promise.all(arrayData).then(function(objs){
      async.each(objs, function(data, callback){
        request({
          headers: {'Content-Type':'application/json'},
          url : // here I used lambda khjj url here,
          method: 'POST',
          body: company,
          json: true
      }, function (err, res, body) {
          if(!_.isNil(err)){
            console.log(err);
            console.log('error in triggering')
          } else {
            // tried this callback as well to stop that error of socket hangup
            callback(null, 'success')
          }
          })
        }, function(err){
          console.log()
        })
      }, function(err){
         console.log(err)
      })
    }, function(err){
      console.log('error in getting data from table :', err)

    })
  resolve(true);
})
 }

现在上面的 lambda 函数触发了 "khjj" lambda,所以我在 "khjj" lambda 函数中使用了 awsServerlessExpress 函数,所以它在代码中获取请求:

    app.post('/called/by/abc/lambda', function(req, 
     resp){
      check.message(request).then(function(response){
      resp.write('success')
      resp.end();
      }, function(err){
         console.log(err)
       resp.end();
    })
   })

上面的 lambda 即 khjj 出现了套接字错误,搜索了整个网络甚至 stackoverflow 和 aws 论坛,但没有得到任何解决方案

甚至考虑过这个网站:https://gregjs.com/javascript/2015/how-to-scrape-the-web-gently-with-node-js/

请任何帮助都可以。谢谢。

CloudWatch 错误:

    2017-05-25T13:30:15.043Z    009c3110-414e-11e7-99b5-b3bd2686fba3    
    { Error: socket hang up
    at createHangUpError (_http_client.js:253:15)
    at Socket.socketOnEnd (_http_client.js:345:23)
    at emitNone (events.js:91:20)
     at Socket.emit (events.js:185:7)
     at endReadableNT (_stream_readable.js:974:12)
     at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickDomainCallback 
    (internal/process/next_tick.js:128:9) code: 'ECONNRESET' }

【问题讨论】:

  • 能否将堆栈跟踪记录到 cloudwatch 并在此处提供?
  • 是的,我已经更新了日志错误。

标签: node.js express aws-lambda


【解决方案1】:

我解决了上面的问题,错误只是因为在代码中的某个地方我没有正确处理承诺拒绝。

【讨论】:

    猜你喜欢
    • 2021-01-02
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2014-07-27
    • 2018-01-29
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多