2016-11-27 12 views
0

私はAlexa Skillの問題を解決しようとしています。私は多くのチュートリアルを見て読んでみましたが、Node.jsからの謎のエラーメッセージが表示されました... 私はただhttpリクエストを送信しようとしています。マイコードはこのようになりますnode.jsが "New"のプロパティを読み取ることができません

var https = require('https') 

exports.handler = (event, context) => { 

    try { 

    if (event.session.new) { 
     console.log("NEW SESSION") 
    } 

    switch (event.request.type) { 

     case "LaunchRequest": 
     console.log(`LAUNCH REQUEST`) 
     context.succeed(
      generateResponse(
      buildSpeechletResponse("Willkommen bei Taasker", true), 
      {} 
     ) 
     ) 
     break; 

     case "IntentRequest": 
     console.log(`INTENT REQUEST`) 

     switch(event.request.intent.name) { 
      case "taskernightlighton": 
      var endpoint = "" 
      var body = "" 
      http.request("https://autoremotejoaomgcd.appspot.com/sendmessage?key=xxxxxxxxxxxxx&message=nightlighton") 
      context.succeed(
       generateResponse(
        buildSpeechletResponse(`Licht wird von Taasker eingeschaltet`, true), 
        {} 
       ) 
      ) 
      break; 

      case "taskernightlightoff": 
      http.request("https://autoremotejoaomgcd.appspot.com/sendmessage?key=xxxxxxxxxx&message=nightlightoff") 
      context.succeed(
       generateResponse(
        buildSpeechletResponse(`Licht wird von Taasker ausgeschaltet`, true), 
        {} 
       ) 
      ) 
      break; 

      default: 
      throw "Invalid intent" 
     } 

     break; 

     case "SessionEndedRequest": 
     console.log(`SESSION ENDED REQUEST`) 
     break; 

     default: 
     context.fail(`INVALID REQUEST TYPE: ${event.request.type}`) 

    } 

    } catch(error) { context.fail(`Exception: ${error}`) } 

} 

// Helpers 
buildSpeechletResponse = (outputText, shouldEndSession) => { 

    return { 
    outputSpeech: { 
     type: "PlainText", 
     text: outputText 
    }, 
    shouldEndSession: shouldEndSession 
    } 

} 

generateResponse = (speechletResponse, sessionAttributes) => { 

    return { 
    version: "1.0", 
    sessionAttributes: sessionAttributes, 
    response: speechletResponse 
    } 

} 

そして、私は常に次のエラーが表示さ:

{ 
    "errorMessage": "Exception: TypeError: Cannot read property 'new' of undefined" 
} 

を誰かが私のjavascriptの構文が間違っているものを、私にヒントを与えることはできますか?このhttpリクエストを説明するソースが見つかりませんか?助けてください...

答えて

2

エラーメッセージの意味を教えてください。このエラーメッセージは、全く謎めいたものではありません。

"Exception: TypeError: Cannot read property 'new' of undefined" 

どうやらあなたは、プロパティnewを持つオブジェクトを持っています。あなたのコードを読まなければ、myObject.newのようなオブジェクトがあることがわかりました。エラーは、myObjectが未定義であることを示しているため、値がないためnewの値にアクセスできません。インタプリタはこのようにそれを見て:

var myObject = undefined

そして、何あなたがやろうと、次のとおりです。基本的には不可能であるundefined.new、としてランタイムによって表示される

myObject.new

は、私はあなたのプログラムにCTRL + Fをしたとき、私はあなたが持っていることがわかっ

実用的な取得することができます:

if (event.session.new) {

次のようにだから私の推測です:eventは未定義であるかsessionのいずれか定義されていません。それはエラーをもたらします。これは、次の疑問を提起します:どのように輸出したのですか?handler?そこに問題があるかもしれません。

もう1つ質問がありますか?console.logログ"NEW SESSION"

関連する問題