2013-12-22 51 views
2

我想爲Github的Hubot編寫一個腳本,它使用TooTallNate的Node-Spotify-Web通過spotify播放音樂,而且我對CoffeeScript有點新穎(Hubot腳本是用什麼編寫的)。我寫了第一個命令「播放」在這裏:SyntaxError:保留字「功能」

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

在運行斌/ hubot我得到了錯誤「語法錯誤,保留字‘功能’所以我說,好吧,改變「功能。'到‘ - >’作爲推薦的另一StackOverflow的問題,製作它,所以它的出現:

http://pastebin.com/dEw0VrH5

但仍然得到錯誤

錯誤無法加載/ home/xbmc/cbot/lisa/scripts/spotify:SyntaxError:保留字「function」

是因爲依賴關係嗎?我真的被困在這裏。

+2

你使用的CoffeeScript,你的問題說,或JavaScript,因爲你把標籤? –

+1

這看起來不正確'spotify.get(uri, - >(err,track){'。你也需要把格式化的代碼放在SO(或任何在線任何地方)是將製表符轉換爲空格。 – elclanrs

+0

CoffeeScript,我道歉 – ChiChu

回答

4

coffee script documentation is how to declare functions的第一部分之一。你不只是把function改成->。這並不簡單。在Javascript功能function(args) { body },但在咖啡腳本是(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) -> 
+0

謝謝,我很感激! – ChiChu

0

CoffeeScript中的函數的語法

(arguments...) -> 
    body 

,而不是

-> (arguments...) { 
    body 
} 

你有正確的語法太:

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

你從什麼地方複製粘貼代碼段?

+0

一些什麼,我一直在試圖編寫一個腳本hubot來控制XBMC的大部分時間,所以我瞭解了一些事情,然後我試圖從[這裏](https://github.com) /TooTallNate/node-spotify-web/blob/master/example/play.js),同時試圖確保它適用於hubot – ChiChu

+0

您的參考文獻是JavaScript。你正在寫CoffeeScript。這就像從德語版Faust中爲你的英語課作文中選擇的單詞。 :) – Amadan