【问题标题】:Code working locally but not on AWS Lambda代码在本地工作,但不在 AWS Lambda 上
【发布时间】:2016-11-24 15:35:05
【问题描述】:

我有以下代码,它将成为 Alexa Skill 的一部分,它在本地使用 node.exe 可以正常工作,但是当我将它放入 Lambda 时,提取什么也不返回!和 SpeechOutput 只是有“你的标题是:”。谁能提出为什么它不起作用?

    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);
      });

【问题讨论】:

  • 您是否在上传到 lambda 的部署包中包含任何引用的库?
  • Tom,不应该因为我只使用https吗?代码运行没有错误,如果缺少库,我不会期望看到错误吗?
  • 很确定这与异步运行有关,但我不确定如何解决问题。
  • CloudWatch 中的此功能是否有任何错误?
  • 也许您正在将响应发送回 echo,在请求完成之前...您查看日志了吗?docs.aws.amazon.com/lambda/latest/dg/…

标签: amazon-web-services aws-lambda alexa-skill


【解决方案1】:

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

查看代码,lambda 可能在您的回调完成之前关闭。这就是为什么您确实收到了第一个日志记录,但没有收到其余的日志记录。是的,如果 require('https') 失败,你应该会得到一个错误,所以可能不是这样。

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

【讨论】:

    猜你喜欢
    • 2019-04-20
    • 2017-06-05
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2019-10-04
    • 1970-01-01
    相关资源
    最近更新 更多