amazon-web-services
  • aws-lambda
  • alexa-skill
  • 2016-11-24 38 views 1 likes 
    1

    我有以下代码,它将形成Alexa技巧的一部分,它可以在本地使用node.exe很好地工作,但是当我将它放入Lambda时,该提取不会返回任何内容!和speechOutput只是“你的标题是:”。任何人都可以提出为什么它不起作用?在本地工作但不在AWS上的代码Lambda

    var speechOutput="Your headlines are:"; 
        var urlPrefix = 'https://api.rss2json.com/v1/api.json?rss_url=http://news.com/feed/'; 
        const https = require('https'); 
        //console.log(https.get(urlPrefix)); 
        https.get(urlPrefix, (res) => { 
         var body = ''; 
         res.on('data', function(data) 
         { 
          body += data; 
         }); 
    
         res.on('end', function() 
         { 
          var result = JSON.parse(body); 
          jItems=result.items; 
          for (var i=0 ; i < jItems.length ; i++) { 
            var article = jItems[i]; 
    
             speechOutput +=", "+article.title ; 
                } 
          //console.log(speechOutput); 
         }); 
    
        }).on('error', function(e) 
         { 
         console.log('Error: ' + e); 
         }); 
    
    +0

    您是否在您上传到lambda的部署包中包含了任何引用的库? –

    +0

    汤姆,不应该不需要应该我,因为我只使用https?代码运行时没有错误,如果库缺失,我是否会发现错误? –

    +0

    很确定这是与异步运行,但我不知道如何解决这个问题。 –

    回答

    2

    我想将此添加为评论,但我没有足够的声望。 :\

    查看代码,lambda可能在您的回调完成之前关闭。这就是为什么你会收到第一次日志,而不是其他日志。是的,如果require('https')失败,你应该会得到一个错误,所以可能并非如此。

    你可以发布你的其他代码吗?你在哪里在我们的lambda中调用context.done,或者在较新版本的节点中,你是否会对处理程序执行回调?

    相关问题