4

我的Rails 3.1.rc4應用程序工作正常,但我試圖找出適當的方式來存儲我的js文件在管道中。如果我把所有的代碼比其他的application.js文件,我得到以下錯誤:ExecJS問題編譯Rails 3.1資產

Started GET "/assets/application.js" for 127.0.0.1 at 2011-07-21 23:15:02 -0500 Compiled ~/Dropbox/Rails/myapp/app/assets/javascripts/application.js.coffee (224ms) (pid 69397) Error compiling asset application.js: ExecJS::ProgramError: SyntaxError: Reserved word "function" on line 1 (in /Users/micahalcorn/Dropbox/Rails/myapp/app/assets/javascripts/users/registrations.js.coffee) Served asset /application.js - 500 Internal Server Error

這種情況無論是哪個文件(registrations在這種情況下),並聲稱「保留字」不管第一(var,function等)。我使用node.js作爲我的運行時環境,並且一切工作正常,如果我刪除coffeescript編譯寶石並將其視爲Rails 3.0應用程序。我想更好地瞭解資產管道並遵循慣例。感謝您的任何建議!

回答

8

誤差

SyntaxError: Reserved word "function" on line 1 

是CoffeeScript的編譯錯誤。將function轉換爲->,並將其重命名爲registrations.js,以便將該文件讀爲原始JavaScript。

+0

我認爲我可以混合原始js和cs。很簡單,謝謝! –

+2

你可以*將*原始JS與CoffeeScript混合(通過在它周圍加反引號),但這通常不是一個好主意。相反,將JS保存在'.js'文件中,並將CoffeeScript保存在'.js.coffee'文件中。鏈輪讓這兩種語言並存很容易。 –

+0

我不明白。根據CoffeeScript網站的說法:「您可以使用任何現有的JavaScript庫(來自CoffeeScript)(反之亦然)。」 – Nowaker