2016-11-24 7 views
1

Alexaスキルの一部を構成する次のコードは、node.exeを使用してローカルで正常に動作しますが、Lambdaに置くとフェッチは何も返しません。 speechOutputには "Your headlines are:"だけがあります。誰もそれが動作しない理由を提案することはできますか?コードはローカルではあるが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

ラムダにアップロードした展開パッケージに参照されているライブラリを含めましたか? –

+0

Tom、私はhttpsだけを使用しているので、私はすべきではありませんか?コードはエラーなしで実行されますが、ライブラリが見つからないとエラーは見られませんか? –

+0

これはAsyncrhronousを実行していることとはかなり関係していますが、問題の解決方法はわかりません。 –

答えて

2

私はこれをコメントとして追加したいと思いますが、評判は十分ではありません。 :\

コードを見ると、コールバックが完了する前にラムダがシャットダウンしている可能性があります。最初のロギングは受け取りますが、残りのロギングは受け取りません。もちろん、require( 'https')が失敗した場合はエラーが発生するはずなので、そうではありません。

残りのコードを投稿できますか?私たちのラムダでcontext.doneを呼び出すか、新しいバージョンのノードでハンドラへのコールバックを行いますか?

関連する問題