【问题标题】:I want to add list in Action on Google我想在 Action on Google 中添加列表
【发布时间】:2018-08-09 08:08:40
【问题描述】:

我正在尝试在我的操作中添加一个列表,但它显示了一些错误, 我无法识别它。所以这是我的代码,这个列表将被添加到 Google 上的 Action 中,当我尝试将此代码部署到 firebase 时,它​​不会使用它。请给我一些工具的名称,我可以在其中运行此代码

我在 Firebase 中部署它时出错。我正在粘贴所有错误,所以如果有人可以帮助我了解如何解释错误

26:23 error 解析错误:Unexpected token ;

✖ 1 个问题(1 个错误,0 个警告)

npm 错误!代码生命周期

npm 错误!错误号 1

npm 错误!函数@ lint:eslint .

npm 错误!退出状态 1

npm 错误!

npm 错误! functions@lint 脚本失败。

npm 错误!这可能不是 npm 的问题。上面可能还有额外的日志输出。

npm 错误!可以在以下位置找到此运行的完整日志: npm 错误! /home/vaibhav/.npm/_logs/2018-08-09T07_44_01_549Z-debug.log

错误:函数预部署错误:命令以非零退出代码终止

  'use strict'

const {dialogflow}=require('actions-on-google');
const functions = require('firebase-functions');

const app=dialogflow({debug : true });




app.intent('what is',(conv,{menu})=>
conv.ask("this is today's menu");
conv.ask(new List({
  title : "Today's Menu",
  items : {
    [SELECTION_KEY_ONE]:{
      synonyms:[
      'show me Chinese',
      'Chinese',
    ],
    title : 'Chinese menu',
    description : 'chow(30/-), manchurian(50/-),hakka chow(80/-)',
    image : new Image({
      url : 'ibb.co/jJHNMU',
      alt : 'chinese food',
    }),
  }
  [SELECTION_KEY_TWO]:{//showing error in this line near column
    synonyms:[
    'show me Veg',
    'Veg',
  ],
  title : 'Veg menu',
  description : 'chow(30/-), manchurian(50/-),hakka chow(80/-)',
  image : new Image({
    url : 'ibb.co/jJHNMU',
    alt : 'chinese food',
  }),
},
},
}  ));
);


exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

【问题讨论】:

  • 你说它“显示一些错误”。该错误是什么,因为它有助于追踪原因而不是仅仅试图解释您的代码
  • @TommyBs 更新

标签: javascript node.js actions-on-google google-assistant-sdk


【解决方案1】:

在部署函数之前运行 eslint . 时,该工具将自动检查代码中与样式和功能相关的潜在问题。

查看错误26:23 error Parsing error: Unexpected token ;,我查看了您代码中的第 26 行,这似乎对指标没有那么有用:

image : new Image({
  url : 'ibb.co/jJHNMU',
  alt : 'chinese food',
}),

但我确实在该部分发现了几个可能导致此错误或可能导致错误的问题。

现在您列表中的每个项目都用[SELECTION_KEY_ONE] 表示。这意味着该对象将使用来自名为SELECTION_KEY_ONE 的变量的值作为键。此变量不存在,应该会导致错误。要解决此问题,您应该:

  • 为每个键创建一个新变量:const SELECTION_KEY_ONE = 'one'
  • 硬编码每个键的值:items: { 'one': { ...

第一个选项更可取,因为您可以将常量分隔到一个合乎逻辑的位置并在任何地方重用它们。

另一个问题似乎是您的列表对象似乎提前关闭,导致潜在的语法错误。

items : {
  [SELECTION_KEY_ONE]:{
    synonyms:[
      'show me Chinese',
      'Chinese',
    ],
    title : 'Chinese menu',
    description : 'chow(30/-), manchurian(50/-),hakka chow(80/-)',
    image : new Image({
      url : 'ibb.co/jJHNMU',
      alt : 'chinese food',
    }),
  }
  [SELECTION_KEY_TWO]:{//showing error in this line near column
  // ...

JSON 对象设置为一系列键值对,以逗号分隔。然后它关闭。查看此 sn-p,您似乎关闭了第一个项目,而在 }[SELECTION_KEY_TWO] 之前没有逗号,导致错误。

顺便说一句,使用标识和间距来更好地显示执行的层次结构可能会有所帮助。这可以使您的代码对您自己和其他人更具可读性,并且可以让您更快地识别潜在错误。

【讨论】:

  • 谢谢你的回答,一个问题,我是否总是在 app.intent() 中声明 conv 函数?
  • 不,你会得到conv作为参数,所以你现在在这方面很好。
猜你喜欢
  • 2020-03-30
  • 2022-11-06
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多