Сообщение об ошибке Eco: неожиданный «ОТСТУП» в Windows

#javascript #ruby-on-rails #windows #spine.js #eco

#javascript #ruby-on-rails #Windows #spine.js #eco

Вопрос:

В настоящее время я использую spinejs и систему шаблонов eco в проекте rails. Он отлично работает на моем Mac, однако при его развертывании в Windows возникает странная ошибка с отступом. И код является:

 <div class="contacts">
    <% for contact_record in @unchecked_contact_records : %>
        <%= contact_record %><br>
    <% end %>
</div>
  

И сообщение об ошибке является:

 ExecJS::ProgramError in Admin#dashboard

Showing C:/Users/rayshih.mama-PC/workspace/showwin_ror_1_5/app/views/layouts/application.html.erb where line #6 raised:

Error: Parse error on line 2: Unexpected 'INDENT'
  (in C:/Users/rayshih.mama-PC/workspace/showwin_ror_1_5/app/assets/javascripts/admin/views/dashboard/contacts.jst.eco)

Extracted source (around line #6):

3: <head>
4:   <title>Show Win Printing Service</title>
5:   <%= stylesheet_link_tag    "application" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>
9: <body>
  

Я думал, что это проблема только для оператора block, но благодаря этому эксперименту:

 <div class="contacts">
    <% if true: %>
        <%= "hello world" %><br>
    <% end %>
</div>
  

В этом эксперименте ошибки нет. Таким образом, это не ошибка оператора block. Похоже, это происходит только в операторе цикла for, но почему?

Комментарии:

1. Может ли это быть проблемой конца строки? У ваших файлов в Windows есть окончания строк CR-LF или просто LFS?

2. в настоящее время используется только LFS, но две ситуации выше — это все LFS. Один в порядке, другой нет : (

3. Я тоже пробовал окончания строк CR-LFS, все еще не работает : (

4. Значит, на самом деле это вопрос JavaScript, который не имеет никакого отношения к Ruby или Rails?

5. Rails вызовет ExecJS для запуска ECO system для компиляции шаблона, и этот процесс выполняется на сервере. Я думаю, проблема заключается в том, что после того, как eco system скомпилирует шаблон в coffeescript, он сохранится во временном файле, а затем снова прочитает его для компиляции в javascript.

Ответ №1:

Это известная проблема:https://github.com/sstephenson/eco/issues/29

Я последовал инструкциям одного из комментаторов и установил Node:http://nodejs.org / Узел автоматически добавляется к вашему пути, поэтому, как только вы проверите, что узел находится в пути, введя «узел» в командной строке, перезапустите ваш rails-сервер, и это должно быть исправлено.