AWS Lambda JS出现Unexpected Token {解析错误,请求排查帮助
排查JavaScript中
Parsing Error: Unexpected Token {的思路(针对Alexa Skill场景) 兄弟,我懂这种盯着代码找半天找不到语法错误的痛苦!尤其是刚学JavaScript的时候,这种Parsing Error: Unexpected Token {的错误真的让人头大。结合你提到的和给出的Alexa SDK代码片段,我给你几个实用的排查思路:
重点检查
YesIntent的定义语法
既然错误明确和YesIntent相关,那大概率是这个Intent的代码块出了问题。你可以重点核对:- 是不是在
alexa.registerHandlers的对象字面量里,YesIntent的函数定义格式有误?比如有没有漏掉冒号、逗号,或者函数的大括号不匹配?
举个正确的示例参考:
alexa.registerHandlers({ YesIntent() { this.response.speak("已确认你的选择!"); this.emit(":responseReady"); }, HelloIntent() { this.response.speak("欢迎使用我的技能!"); this.emit(":responseReady"); } // 注意每个Intent之间的逗号,最后一个Intent后面不要加逗号 });- 如果你用的是箭头函数定义Intent,要检查箭头函数的写法是否正确,比如
YesIntent: () => { ... },这里的冒号和箭头都不能少。
- 是不是在
补全并检查截断的代码部分
你提供的代码到alexa.appId...就中断了,这里很可能是问题所在:- 是不是漏写了赋值语句?比如
alexa.appId = appId;有没有漏掉等号或者分号? - 后续的
alexa.registerHandlers调用是否完整?有没有正确闭合所有大括号?最后有没有调用alexa.execute();来启动技能?
- 是不是漏写了赋值语句?比如
借助工具快速定位错误位置
手动检查大括号匹配容易眼花,你可以用这些工具辅助:- 直接把完整代码(记得去掉敏感的appId)粘贴到VS Code里,它会用红色波浪线标出错误位置;
- 用浏览器的开发者工具控制台,把代码粘贴进去运行,控制台会精准提示错误的行号和原因;
- 用在线的ESLint检查工具,快速扫描语法问题。
排查拼写和符号细节
新手很容易忽略这些小细节:- 有没有把
YesIntent的大小写写错?比如写成yesIntent,虽然这更多会触发Reference Error,但如果是在对象键名里的错误搭配,也可能引发语法错误; - 检查Intent之间的逗号:对象字面量里,每个键值对后面需要加逗号,但最后一个键值对后面不能加逗号,多写或少写都会触发语法错误。
- 有没有把
检查语法兼容性
如果你混用了ES6+的语法(比如箭头函数、简写函数),但你的Node.js版本过低不支持,也可能触发这类错误。你可以查看Alexa SDK要求的Node.js版本,确保环境符合要求。
按照这几个步骤一步步排查,应该能快速定位到问题。刚学JavaScript的时候遇到这种问题很正常,多排查几次就会慢慢培养出对语法细节的敏感度啦!
内容的提问来源于stack exchange,提问作者Teckrio
相关产品推荐
相关产品推荐

