【问题标题】:SyntaxError: Reserved word "function"SyntaxError:保留字“功能”
【发布时间】:2014-01-10 16:00:45
【问题描述】:

我正在尝试为 Github 的 Hubot 编写一个脚本,该脚本使用 TooTallNate 的 Node-Spotify-Web 通过 spotify 播放音乐,而且我对 CoffeeScript 有点陌生(Hubot 脚本是用什么编写的)。我在这里写了第一个命令“播放”:

http://pastebin.com/Pp6mqucm

lame = require('lame')
Speaker = require('speaker')
Spotify = require('spotify-web')

username = "INSERTUSERNAMEHERE"
password = "INSERTPASSWORDHERE"

robot.respond /play (.*)/i, (message) ->
  uri = message.match[1]
  Spotify.login(username, password, function (err, spotify)) {
        if (err) throw err;
        console.log('Playing: %s - %s', track.artist[0].name, track.name)
}
  spotify.get(uri, function(err, track){
        if err throw err;
        message.send("Playing:" + track.artist[0].name, track.name)
        })

在运行 bin/hubot 时,我收到错误“语法错误,保留字“功能”,所以我说,好的,并将“功能”更改为“->”,正如另一个 StackOverflow 问题中的建议。使它看起来像:

http://pastebin.com/dEw0VrH5

但还是报错

错误无法加载 /home/xbmc/cbot/lisa/scripts/spotify: SyntaxError: reserved word "function"

是因为依赖关系吗?我真的被困在这里了。

【问题讨论】:

  • 您使用的是 CoffeeScript,如您的问题所说,还是 JavaScript,如您在标签中添加的那样?
  • 这看起来不对spotify.get(uri, ->(err, track){。此外,您只需将格式化代码放入 SO(或任何在线位置)中,只需将制表符转换为空格。
  • CoffeeScript,很抱歉,我完全忘记为它添加标签了。
  • 代码必须进入问题,而不是外部代码托管服务。
  • pastebins中的代码不正确; JS 和 Coffeescript 的混合体。问题原样符合“必须证明对问题的最低理解”。

标签: javascript coffeescript hubot


【解决方案1】:

coffee script documentation is how to declare functions 的第一部分之一。您不只是将单词function 更改为->。没那么简单。在 Javascript 函数中是 function(args) { body },但在 Coffee Script 中是 (args) -> body

但为了简洁起见,当你有这个时:

Spotify.login(username, password, function (err, spotify)) {

CoffeeScript 不行,因为这不是声明函数的语法。你想要:

Spotify.login username, password, (err, spotify) ->
  # function body

这里也一样:

spotify.get(uri, function(err, track){

应该是:

spotify.get uri, (err, track) ->

【讨论】:

  • 谢谢,非常感谢!
【解决方案2】:

CoffeeScript 的函数语法是

(arguments...) ->
    body

而不是

-> (arguments...) {
    body
}

你也有正确的语法:

robot.respond /play (.*)/i, (message) ->
    uri = message.match[1]
    ....

您是否从某个地方复制粘贴了一个 sn-p?

【讨论】:

  • 什么,我一直在尝试为hubot编写一个脚本来控制XBMC一天的大部分时间,所以我理解了一些事情,然后我试图遵循here的示例,而试图确保它适用于hubot
  • 您的参考是 JavaScript。你在写 CoffeeScript。这就像从德文版的《浮士德》中为你的英语课堂作文挑选单词。 :)
猜你喜欢
  • 1970-01-01
  • 2012-02-19
  • 2022-06-10
  • 1970-01-01
  • 2012-09-28
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
相关资源
最近更新 更多