我正在尝试为Github的Hubot编写脚本,该脚本使用TooTallNate的Node-Spotify-Web通过spotify播放音乐,而且我对CoffeeScript有点新手(编写了什么Hubot脚本)。我在这里写了第一个命令“Play”:
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问题中所推荐的那样。使它显示为:
但仍然会收到错误
错误无法加载/ home / xbmc / cbot / lisa / scripts / spotify:SyntaxError:保留字“function”
是因为依赖吗?我真的被困在这里了。
答案 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]
....
您是否从某处复制粘贴代码段?