编译Rails 3.1资产的ExecJS问题

Mic*_*orn 4 node.js coffeescript ruby-on-rails-3.1 execjs asset-pipeline

我的Rails 3.1.rc4应用程序工作正常,但我正在试图找出将js文件存储在管道中的适当方法.如果我将任何代码放在application.js以外的文件中,我会收到以下错误:

在2011-07-21 23:15:02 -0500开始GET"/assets/application.js"为127.0.0.1编译〜/ Dropbox/Rails/myapp/app/assets/javascripts/application.js.coffee(224ms) (pid 69397)编译资产application.js时出错:ExecJS :: ProgramError:SyntaxError:第1行的保留字"function"(在/Users/micahalcorn/Dropbox/Rails/myapp/app/assets/javascripts/users/registrations.js中.coffee)服务资产/application.js - 500内部服务器错误

发生这种情况而不管哪个文件(registrations在这种情况下)并要求该文件(在"保留字"不管第一字的var,function等).我使用node.js作为我的运行时环境,如果我删除coffeescript编译gems并将其视为Rails 3.0应用程序,一切正常.我想更好地理解资产管道并遵循惯例.谢谢你的任何建议!

Tre*_*ham 8

错误

SyntaxError: Reserved word "function" on line 1
Run Code Online (Sandbox Code Playgroud)

是CoffeeScript编译器错误.转换function->in registrations.js.coffee或重命名为,registrations.js以便将文件作为原始JavaScript读取.

  • 你可以*使用CoffeeScript混合原始JS(通过在它周围添加反引号),但这通常不是一个好主意.相反,将JS保存在`.js`文件中,将CoffeeScript保存在`.js.coffee`文件中.链轮使两种语言共存变得容易. (2认同)
  • @DamianNowak是的,但您不能在同一个文件中混合使用JavaScript和CoffeeScript代码.文档的内容是CoffeeScript文件可以使用JavaScript文件中定义的对象/函数,反之亦然. (2认同)