ExecJS问题编译Rails 3.1资产

4
我的Rails 3.1.rc4应用程序一直运行良好,但我正在尝试找出将我的js文件存储在pipeline中的适当方法。如果我将任何代码放在除application.js之外的文件中,我会收到以下错误消息:
开始GET“/assets/application.js”以127.0.0.1为目标,在2011-07-21 23:15:02 -0500编译~/Dropbox/Rails/myapp/app/assets/javascripts/application.js.coffee(224ms)(pid 69397)错误编译资产应用程序.js:ExecJS :: ProgramError:第1行保留字“function”语法错误(在/Users/micahalcorn/Dropbox/Rails/myapp/app/assets/javascripts/users/registrations.js.coffee中)服务资产/应用程序.js - 500内部服务器错误
无论哪个文件(在这种情况下是“registrations”)都会发生这种情况,并声称存在“保留字”,而与文件中的第一个单词(例如“var”,“function”等)无关。我正在使用node.js作为我的运行时环境,如果我删除coffeescript编译宝石并像Rails 3.0应用程序一样处理它,那么一切都很正常。我想更好地了解资产管道并遵循惯例。感谢任何建议!
1个回答

8
错误提示
SyntaxError: Reserved word "function" on line 1

是 CoffeeScript 编译错误。要么将 function 转换为 ->,要么将其重命名为 registrations.js,以便该文件被视为原始 JavaScript。


我以为我可以将原始的JS与CS混合在一起。非常简单,谢谢! - Micah Alcorn
2
你可以在CoffeeScript中使用原始的JS代码(通过用反引号将其括起来),但这通常不是一个好主意。相反,将你的JS代码放在.js文件中,将你的CoffeeScript代码放在.js.coffee文件中。Sprockets使得让这两种语言共存变得容易。 - Trevor Burnham
我不明白。根据CoffeeScript网站的说法:“您可以在CoffeeScript中无缝地使用任何现有的JavaScript库(反之亦然)。” - Nowaker
2
@DamianNowak 是的,但是你不能在同一个文件中混合使用JavaScript和CoffeeScript代码。文档所说的是CoffeeScript文件可以使用在JavaScript文件中定义的对象/函数,反之亦然。 - Trevor Burnham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接