ExecJS::ProgramError: SyntaxError: 保留字 "function"

33

在我们的Rails rfq.js.coffee文件中,我们只有一个简单的JS代码:

$(function() {
  $('#need_report').change(function(){
    if ($(this).val() == true) {
      $('#report_language').hide();
    }  // end if
  });  // end change()
});  // end ready(function)

但是,这段代码会引起错误,提示第一行的function()是一个保留字。由于第一行基本上是一个jQuery $(document).ready(function () {}),我们不知道为什么会出现这个错误。有什么想法吗?非常感谢。


2
等一下,这是CoffeeScript吗?为什么你在CoffeeScript中使用普通JS呢? - Blender
7
http://js2coffee.org/ 将会成为你的好帮手。 - Jesse Wolgamott
3个回答

48

在 CoffeeScript 文件中,无法像标准的 JS 那样使用它。要么将文件重命名为 rfq.js,要么将其转换为 CoffeeScript:

$ ->
  $('#need_report').change ->
    if $(this).val()
      $('#report_language').hide()

4
刚刚将文件重新命名为js文件。认为在coffee script中可以直接使用js而不需要做出任何更改。同时发现了一个可以将js转换为coffee script或反之的网站。http://js2coffee.org/ 谢谢。 - user938363
是的,这不像 Sass vs CSS 那样,你可以在 scss 文件中使用标准 CSS。 - Dylan Markow
然而,在将rfqs.js.coffee重命名为rfqs.js之后,application.js中出现了一个奇怪的错误,指示第9574行存在非法字符(应用程序中只有大约100行代码)。我将文件名改回.coffee,错误消失了。够奇怪的! - user938363
14
根据 CoffeeScript 网站上的介绍:"你可以在 CoffeeScript 中无缝使用任何现有的 JavaScript 库(反之亦然)"。我不理解。 - Nowaker

8

您可以使用反引号“`”将常规JavaScript嵌入代码中。但我希望它也像其他解析语言一样运行...这让我浪费了很多不必要的时间进行调试和搜索。http://coffeescript.org/#embedded


2

如果你把JavaScript代码写入扩展名为.coffee的文件中,你可以使用js2.coffee将你的代码从JavaScript转换成CoffeeScript。


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