8

Я использую coffeescript + ruby-on-rails. Компиляция coffeescript в чистом JS приводит к ошибке, если в коду кофе есть проблема синтаксиса. В браузере, когда я запускаю приложение, я получаю эту ошибку: ExecJS::RuntimeErrorОшибка компиляции 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

Здесь некачественный ответ: от ваших данных я чувствую, что «SyntaxError: [STDIN]: 25: 10: неожиданный: «интересно - вы могли бы выкопать, чтобы найти этот stdin и попытаться оглядеть строку 25, символ 10, и что-то может быть неправильным с символом«: ». У вас также есть опции, чтобы увидеть «Трассировка приложения» «Ракурсная трассировка» или «Полная трассировка» - общие сведения об этом тоже интересны. –

+0

Вот еще один некачественный метод: вы можете пошагово сократить свой кофе-код, отбросив функциональность вашего скрипта, пока не получите ошибок компиляции. Это может указывать на место, где все пошло не так. Вы можете использовать внешний инструмент проверки синтаксиса для проверки кода вашего кофейного кода, поскольку кажется, что у вас есть синтаксическая ошибка. –

+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