编译Rails 3.1资产的ExecJS问题

时间:2011-07-22 04:40:35

标签: node.js coffeescript ruby-on-rails-3.1 asset-pipeline execjs

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

  

在2011-07-21开始获取127.0.0.1的“/assets/application.js”   23:15:02 -0500编译   〜/ Dropbox的/ Rails的/ MyApp的/应用/资产/ JavaScript的/ 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内部服务器错误

无论文件中的第一个单词(registrationsvar等)如何,都会发生这种情况,无论哪个文件(在这种情况下为function)并声明“保留字”。我使用node.js作为我的运行时环境,如果我删除coffeescript编译gems并将其视为Rails 3.0应用程序,一切正常。我想更好地理解资产管道并遵循惯例。谢谢你的任何建议!

1 个答案:

答案 0 :(得分:8)

错误

SyntaxError: Reserved word "function" on line 1

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