SyntaxError:保留字“功能”

时间:2013-12-22 05:24:54

标签: javascript coffeescript hubot

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

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:保留字“function”

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

2 个答案:

答案 0 :(得分:4)

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) ->

答案 1 :(得分:0)

CoffeeScript的函数语法是

(arguments...) ->
    body

而不是

-> (arguments...) {
    body
}

你也有正确的语法:

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

您是否从某处复制粘贴代码段?