#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-сервер, и это должно быть исправлено.