【问题标题】:node.js cannot read property of "New"node.js 无法读取“新”的属性
【发布时间】:2016-11-28 11:37:34
【问题描述】:

我现在正在尝试解决我的 Alexa Skill 的问题。我观看并阅读了很多教程并尝试搜索它,但我总是从 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 请求的来源?请帮忙...

【问题讨论】:

    标签: node.js alexa-skills-kit


    【解决方案1】:

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

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

    显然您有一个具有属性new 的对象。因此,无需阅读您的代码,我现在就知道您有一个类似于 myObject.new 的对象。错误是说myObject 未定义,因此它无法访问new 中的值,因为没有值。解释器是这样看的:

    var myObject = undefined

    而你尝试做的是:

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

    让我们变得实用

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

    if (event.session.new) {

    所以我的猜测如下:event 未定义或 session 未定义。这给出了错误,这引出了以下问题:你如何调用导出的handler?那里可能有问题。

    另一个问题是:console.log 记录 "NEW SESSION" 吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 2016-05-09
      • 2021-12-05
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多