2016-03-12 83 views
8

我正在使用coffeescript + ruby​​-on-rails。如果咖啡代码中存在语法问题,将coffeescript编译为纯JS会导致错误。在浏览器上运行应用程序时,出现此错误:ExecJS::RuntimeErrorRuby on Rails中的Coffeescript编译错误

有没有什么方法可以找出导致编译错误的原因,当它试图编译咖啡代码给JS? 附件是错误enter image description here

以下的截图是在服务器日志中的条目,这绝不表示这实际上导致了语法错误的文件:

ActionView::Template::Error (SyntaxError: [stdin]:25:10: unexpected :): 
    4:  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    5:  <title><%= content_for?(:title) ? yield(:title) : "Inmonarch Website" %></title> 
    6:  <meta name="description" content="<%= content_for?(:description) ? yield(:description) : "Inmonarch Website" %>"> 
    7:  <%= stylesheet_link_tag 'application', media: 'all' %> 
    8:  <%= javascript_include_tag 'application' %> 
    9:  <%= csrf_meta_tags %> 
    10: </head> 
    app/views/layouts/dashboard.html.erb:7:in `_app_views_layouts_dashboard_html_erb__3120053487817944018_56303120' 


    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_source.erb (7.4ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.0ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.6ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (25.5ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/web-console-2.3.0/lib/web_console/templates/_markup.html.erb (0.3ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/web-console-2.3.0/lib/web_console/templates/_inner_console_markup.html.erb within layouts/inlined_string (0.3ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/web-console-2.3.0/lib/web_console/templates/_prompt_box_markup.html.erb within layouts/inlined_string (0.3ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/web-console-2.3.0/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.3ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/web-console-2.3.0/lib/web_console/templates/console.js.erb within layouts/javascript (296.8ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/web-console-2.3.0/lib/web_console/templates/main.js.erb within layouts/javascript (0.2ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/web-console-2.3.0/lib/web_console/templates/error_page.js.erb within layouts/javascript (0.3ms) 
    Rendered /home/vipin8169/.rvm/gems/[email protected]/gems/web-console-2.3.0/lib/web_console/templates/index.html.erb (313.8ms) 

PS: - 我知道什么语法错误是,我故意犯了语法错误,以查明我是否能够在日志的帮助下跟踪错误,但我不能。

+0

下面是一个低质量的答案:从您的数据我觉得“语法错误:[标准输入]:25:10:意外: “很有意思 - 你可以挖掘找到stdin,并尝试围绕第25行看,符号10,可能是':'符号的错误。您还可以选择查看“应用程序跟踪”“框架跟踪”或“完整跟踪” - 通常这些事情都有有趣的信息。 –

+0

这是另一种低质量的方法:您可以逐步减少coffeeScript,逐个扔掉脚本的功能,直到您没有编译错误。这可能表明事情出错的地方。您可以使用外部语法检查工具来测试您的coffeeScript代码,因为您似乎有语法错误。 –

+0

'应用程序跟踪''框架跟踪'或'完整跟踪'没有任何用处。 25:10正确地说错误的位置,但我如何才能知道语法错误存在的文件名? [stdin]指的是什么? – vipin8169

回答

4

一个解决办法是编译轨道之外的.coffee文件得到一个体面的错误消息:

如果您还没有它:

npm i coffee-script -g 
.coffee文件的父目录

然后:

coffee --output deleteme --compile . 

当您完成后,删除它创建的文件夹deleteme(这是唯一的创建,如果你解决所有日e错误)。这应该为你找到语法错​​误,并告诉你它到底在哪里。

-1

您可以使用网上棉短绒像http://www.coffeelint.org/如果你知道它的CoffeeScript导致错误

+0

如果你有几十万个咖啡文件,并且不知道哪一个是错误的,那么这可能会让你疯狂! – atefth

+0

Rails开发人员可能只想学习JavaScript,然后... – mp1131211

+0

我知道JavaScript比咖啡好多了.. – vipin8169