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