Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js无法读取“的属性”;新";_Node.js_Alexa Skills Kit - Fatal编程技术网

node.js无法读取“的属性”;新";

node.js无法读取“的属性”;新";,node.js,alexa-skills-kit,Node.js,Alexa Skills Kit,我现在正试图用我的Alexa技能解决一个问题。我观看和阅读了很多教程,并试图搜索它,但我总是从Node.js收到一条神秘的错误消息。。。 我只是尝试发送一个http请求,所以没什么复杂的 我的代码如下所示: var https = require('https') exports.handler = (event, context) => { try { if (event.session.new) { console.log("NEW SESSION")

我现在正试图用我的Alexa技能解决一个问题。我观看和阅读了很多教程,并试图搜索它,但我总是从Node.js收到一条神秘的错误消息。。。 我只是尝试发送一个http请求,所以没什么复杂的

我的代码如下所示:

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请求的来源?请帮助…

我可以告诉您错误消息的含义。错误消息一点也不神秘

"Exception: TypeError: Cannot read property 'new' of undefined"
显然,您有一个具有属性
new
的对象。因此,没有阅读您的代码,我现在知道您有一个类似于
myObject.new
的对象。错误是说
myObject
未定义,因此无法访问
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
  }

}
var myObject=未定义

你要做的是:

myObject.new
,它基本上被运行时视为
未定义。new
,这是不可能的

让我们变得实际点

当我在你的程序中按CTRL+F时,我发现你有:

if(event.session.new){

因此,我的猜测如下:
事件
未定义,或者
会话
未定义。这就产生了错误,引发了以下问题:您如何调用导出的
处理程序
?您可能有问题


另一个问题是:
console.log是否记录
“新会话”

我可以告诉您错误消息的含义。错误消息一点也不神秘

"Exception: TypeError: Cannot read property 'new' of undefined"
显然,您有一个对象具有属性
new
。因此,如果不阅读您的代码,我现在知道您有一个类似
myObject.new
的对象。错误是
myObject
未定义,因此它无法访问
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
  }

}
var myObject=未定义

你要做的是:

myObject.new
,它基本上被运行时视为
未定义。new
,这是不可能的

让我们变得实际点

当我在你的程序中按CTRL+F时,我发现你有:

if(event.session.new){

因此,我的猜测如下:
事件
未定义,或者
会话
未定义。这就产生了错误,引发了以下问题:您如何调用导出的
处理程序
?您可能有问题

另一个问题是:
console.log
是否记录
“新会话”