12

I am using coffeescript+ruby-on-rails. The compilation of coffeescript into pure JS leads to an error if there is a syntax problem in the coffee code. On the browser when I run the app, I get this error: ExecJS::RuntimeError

Is there any way to find out what caused the compilation error, when it was trying to compile coffee code to JS? Attached is a screenshot of the errorenter image description here

Following is the entry in the server log, which no way indicates the file which actually caused the syntax error:

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/ruby-2.2.3@rails426/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_source.erb (7.4ms)
  Rendered /home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.0ms)
  Rendered /home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.6ms)
  Rendered /home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/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/ruby-2.2.3@rails426/gems/web-console-2.3.0/lib/web_console/templates/_markup.html.erb (0.3ms)
  Rendered /home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/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/ruby-2.2.3@rails426/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/ruby-2.2.3@rails426/gems/web-console-2.3.0/lib/web_console/templates/style.css.erb within layouts/inlined_string (0.3ms)
  Rendered /home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/web-console-2.3.0/lib/web_console/templates/console.js.erb within layouts/javascript (296.8ms)
  Rendered /home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/web-console-2.3.0/lib/web_console/templates/main.js.erb within layouts/javascript (0.2ms)
  Rendered /home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/web-console-2.3.0/lib/web_console/templates/error_page.js.erb within layouts/javascript (0.3ms)
  Rendered /home/vipin8169/.rvm/gems/ruby-2.2.3@rails426/gems/web-console-2.3.0/lib/web_console/templates/index.html.erb (313.8ms)

PS:- I know what the syntax error is, I made the syntax error deliberately to find out if I am able to trace the error with the help of logs, which I couldn't.

Community
  • 1
  • 1
Vipin Verma
  • 5,330
  • 11
  • 50
  • 92
  • Here is a low-quality answer: from your data I feel that "SyntaxError: [stdin]:25:10: unexpected :" is interesting - you could dig to find that stdin and try to look around line 25, symbol 10 and something could be wrong with ':' symbol. You also have options to see 'Application Trace' 'Framework Trace' or 'Full Trace' - generaly those things have interesting info too. – Jaiden Snow Mar 12 '16 at 10:57
  • Here is another low-quality method: you could reduce your coffeeScript step-by-step, throwing away feature-by-feature of your script until you get no compilation errors. This could indicate a place where things went wrong. You could use external syntax-checker tool to test your coffeeScript code as it seems that you have a syntax error. – Jaiden Snow Mar 12 '16 at 11:02
  • 'Application Trace' 'Framework Trace' or 'Full Trace' doesn't have anything useful. 25:10 correctly says about the location of the error, but how do I get to know the file name in which the syntax error is present? What does [stdin] refer to? – Vipin Verma Mar 12 '16 at 11:03
  • @Carpetsmoker I didn't include the code because it was not required. I know what the syntax error is, I made the syntax error deliberately to find out if I am able to trace the error with the help of logs, which I couldn't. Hence, I posted a question here. – Vipin Verma Mar 14 '16 at 05:21
  • Probably, I was not clear enough. Sorry. – Vipin Verma Mar 14 '16 at 05:23
  • Do you have `config.assets.debug = true` in `config/environments/development.rb`? This should be on by default, and should split out the files... – Martin Tournoij Mar 14 '16 at 05:29
  • Yes, it is true in the development.rb – Vipin Verma Mar 14 '16 at 05:30
  • It *should* be `true`, which *should* split out the `application.js` in individual files as loaded with Sprockets (`#= require ...` lines). – Martin Tournoij Mar 14 '16 at 05:44
  • Yes, It does split the files. I can see all the files individually in the sources tab of firebug. But, I am not sure about how does that help? – Vipin Verma Mar 14 '16 at 05:50

2 Answers2

10

One workaround is to compile your .coffee files outside rails to get a decent error message:

If you don't yet have it:

npm i coffee-script -g

Then in a parent directory of your .coffee files:

coffee --output deleteme --compile .

When you're done, delete the deleteme folder it created (which is only created if you fix all the errors). This should find the syntax error for you and tell you exactly where it is.

Eric Simonton
  • 5,702
  • 2
  • 37
  • 54
-2

You can use an online linter like http://www.coffeelint.org/ if you know its coffeescript causing the error

shallow.alchemy
  • 530
  • 4
  • 14
  • 2
    that might drive you crazy if you have a zillion coffee files and have no idea which one is in error! – atefth Jun 13 '17 at 05:20