ОБНОВЛЕНИЕ: предложение Колина об удалении строки // = require_tree. исправил проблему.
Я потратил более 2 дней, пытаясь выполнить все предложения и исправить свою проблему. Я пытаюсь следовать книге http://ruby.railstutorial.org на машине с Windows и не могу, хоть убей, пройти следующую неприятную ошибку.
ExecJS::RuntimeError in Static_pages#home
Showing C:/Users/.../bootcamp-sample-app/app/views/layouts/application.html.erb where line #6 raised:
["ok","(function() {\n\n\n\n}).call(this);\n"]
(in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)
Extracted source (around line #6):
3: <head>
4: <title><%= full_title(yield(:title)) %></title>
5: <%= stylesheet_link_tag "application", media: "all" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: <%= render 'layouts/shim' %>
9: </head>
Rails.root: C:/Users/.../bootcamp-sample-app
Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'
Request
Я пробовал все предложения, включая установку nodejs с msi, использование execjs 1.3.0 и других вещей, которые я даже не могу вспомнить. Вот файл с гемом
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'
group :development, :test do
gem 'sqlite3', '1.3.5'
gem 'rspec-rails', '2.10.0'
gem 'guard-rspec', '0.5.5'
gem 'guard-cucumber'
end
group :development do
gem 'annotate', '2.5.0'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails'
gem 'coffee-rails'
gem 'coffee-script'
gem 'uglifier'
end
gem 'jquery-rails', '2.0.2'
gem 'execjs'
# Gems on Linus/Mac
#gem 'therubyracer'
group :test do
gem 'capybara', '1.1.2'
gem 'guard-spork', '0.3.2'
gem 'spork', '0.9.0'
gem 'factory_girl_rails', '1.4.0'
gem 'cucumber-rails', '1.2.1', require: false
gem 'database_cleaner', '0.7.0'
# Test gems on Linux
# gem 'rb-inotify', '0.8.8'
# gem 'libnotify', '0.5.9'
# Test gems on Macintosh OS X
# gem 'selenium-webdriver', '~> 2.22.0'
# gem 'rb-fsevent', '0.9.1', :require => false
# gem 'growl', '1.0.3'
# Test gems on Windows
# gem 'rb-fchange', '0.0.5'
# gem 'rb-notifu', '0.0.4'
# gem 'win32console', '1.3.0'
end
group :production do
# gem 'therubyracer'
gem 'pg', '0.12.2'
end
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
#gem 'debugger''
а вот файл sessions.js.coffee
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
application.js
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require bootstrap
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<%= render 'layouts/shim' %>
</head>
<body>
<%= render 'layouts/header' %>
<div class="container">
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
</html>
Вот содержимое консоли
Processing by StaticPagesController#home as HTML
Rendered static_pages/home.html.erb within layouts/application (45.0ms)
Completed 500 Internal Server Error in 1136ms
ActionView::Template::Error (["ok","(function() {\n\n\n\n}).call(this);\n"]
(in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)):
3: <head>
4: <title><%= full_title(yield(:title)) %></title>
5: <%= stylesheet_link_tag "application", media: "all" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: <%= render 'layouts/shim' %>
9: </head>
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'
Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.0ms)
Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (34.0ms)
Я установил Devkit и пробовал различные драгоценные камни, но, пожалуйста, предложите изменения, которые могут помочь мне развиваться в Windows. Я для всего использовал rubyinstaller.
Что мне не хватает?
javascript
ruby-on-rails
ruby
windows
asset-pipeline
user1687078
источник
источник
//= require_tree .
изapplication.js
и посмотреть , если не удается устранить ошибки?.js.coffee
файл вapp/assets/javascripts
JavaScript, а затем добавляет его в ваш макет (но только в режиме разработки; в производственном режиме скомпилированный js добавляется в вашapplication.js
файл). Наличиеrequire_tree .
не должно вызывать ошибок, значит, у вас почему-то проблема с одним из включаемых файлов. Можете ли вы опубликовать список всех файлов в вашемapp/assets/javascripts
каталоге? Кроме того, вы можете попробовать полностью удалить содержимоеsessions.js.coffee
и добавить обратно//= require_tree .
и посмотреть, сохраняется ли ошибка.Ответы:
Мой друг несколько месяцев назад пытался изучить руководство по Rails по Win 8 RTM и столкнулся с этой ошибкой. Не уверен, существует ли эта проблема и в Windows 7, но это может помочь.
Параметры:
1) Удаление
//= require_tree .
/ игнорирование проблемы - как указано выше в ColinR, эта строка не должна вызывать проблемы. Существует реальная проблема с правильной работой ExecJS со средой выполнения JavaScript в вашей системе, и удаление этой строки просто игнорирует этот факт.2) Установка Node.js / Убегание. Многие люди, кажется, просто устанавливают Node.js и используют его вместо среды выполнения JavaScript, уже установленной в их системе. Хотя это допустимый вариант, он также требует дополнительного программного обеспечения и позволяет избежать только исходной проблемы, заключающейся в том, что ExecJS не работает должным образом со средой выполнения JavaScript, уже установленной в вашей системе. Если существующая среда выполнения JavaScript в вашей системе должна работать, почему бы не заставить ее работать вместо установки дополнительных программ? По словам создателя ExecJS, среда выполнения, уже встроенная в Windows, на самом деле поддерживается ...
3) Фактическое решение проблемы / обучение - Используйте знания вариантов 1 и 2 для поиска других решений. Я не могу сказать вам, сколько веб-страниц, которые я закрыл, увидев варианты 1 или 2, были принятым решением, прежде чем фактически нашел информацию о основной проблеме, с которой мы столкнулись. Единственная причина, по которой мы продолжали искать, заключалась в том, что мы не могли поверить, что команда Rails (1) вставит строку кода в каждый сгенерированный с помощью скаффолда проект, который вызвал проблему, или (2) потребует, чтобы мы установили дополнительное программное обеспечение только для запуска этого значения по умолчанию. строка кода. И вот, в конце концов, мы пришли к решению нашей основной проблемы (количество миль может отличаться).
Фикс , который работал на нас: О системе возникла проблемы, найти ExecJS игрового runtimes.rb файл. Это похоже на это . Сделайте копию найденного файла для резервного копирования. Откройте исходный файл runtimes.rb для редактирования. Найдите раздел, который начинается с линии
JScript = ExternalRuntime.new(
. В этом разделе в строке, содержащей:command => "cscript //E:jscript //Nologo //U",
- удалите//U
единственный. Затем в строке, содержащей:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
- измените UTF-16LE наUTF-8
. Сохраните изменения в файл. Этот раздел файла должен теперь читать:Затем остановите, а затем перезапустите сервер Rails и обновите страницу в браузере, на которой возникла исходная ошибка. Надеюсь, теперь страница загружается без ошибок. Вот ветка проблемы ExecJS, в которой мы изначально разместили наши результаты: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
Если это не устранило проблему, вы всегда можете перезаписать измененный runtimes.rb созданной вами (надеюсь) резервной копией, и все вернется к исходному состоянию. В этом случае рассмотрите вариант 3 и продолжайте поиск. Сообщите нам, что в конечном итоге сработает для вас ... если это не удаление require_tree или установка node.js, этого уже много. :)
источник
UTF-16LE
наUTF-16
без удаления//U
. Я это подтвердил.Была такая же проблема: ОС - Ошибка Windows 8 - ExecJS :: RuntimeError ... Решение - отсутствует Node.js
источник
У меня была эта проблема, и я испортил Интернет, я запускаю Windows 8 с этим файлом драгоценного камня rails
Пошел на http://nodejs.org/download/ установлен - перезапустил машину, и все заработало.
источник
Я предпочел путь обучения . Кажется, проблема связана с
возвращает пустую строку в
execjs\external_runtine.rb
(строка 173 в версии 1.4.0). Вот почему сообщение об ошибке не содержит текста. Предложенные изменения не помогли мне. Я изменилUTF-16LE
наUTF-8
, но по-прежнему возвращал пустую строку. Я удалил\\U
изcommand
- это, по крайней мере, возвращенный текст, но он был в неправильной кодировке - в браузере он отображался как китайские символы.Согласно этому сообщению в блоге MSDN , использование
//U
флага и перенаправление к файлу приводитcscript
к возврату результата с использованиемUTF-16
.И затем волшебным образом это сработало ( @ #% $ & ^ @ $% !!!?!?!) С использованием
command
as"cscript //E:jscript //Nologo"
иencoding
as"UTF-8"
. Ну что ж.источник
Мне пришлось добавить папку nodejs в переменную среды Windows Path. В Windows 8 откройте панель управления, перейдите в раздел «Система», «Дополнительные настройки системы» (слева), нажмите «Переменные среды» слева и отредактируйте переменную Path, чтобы включить каталог в папку nodejs (возможно, в Program Files).
Конечно, вам необходимо установить Node.js (используйте установщик Windows ) и установить CoffeeScript через NPM.
источник
Я знаю, что это очень поздний ответ на эту проблему, но я натолкнулся на нечто подобное и прошел весь путь, чтобы понять, что на самом деле вызывает проблему.
Оказалось, что движок jscript Windows по умолчанию все еще находится на es3, и многие драгоценные камни используют возможности es5 или es6. К сожалению, если это произойдет (вы используете драгоценный камень или фрагмент кода, который использует функции es5 или es6), нет возможности позволить ему работать в Windows с помощью собственного движка js.
Это причина, по которой установка node.js решает проблему (node как минимум es5).
Надеюсь, это поможет некоторым людям, борющимся с ошибкой времени выполнения jsexec.
Мои 2 цента советуют установить узел (очень просто) или установить v8, а не удалять // = require_tree.
Обратите внимание, что execjs будет автоматически использовать node при обнаружении. В противном случае принудительно используйте его, добавив в boot что-то вроде:
Чтобы установить env в node.
источник
Для пользователей Windows это может сработать. Возникла проблема с запуском coffee-script-source> 1.9.0 в Windows.
Кажется, вам нужно добавить это в свой гем-файл:
драгоценный камень 'кофе-скрипт-источник', '1.8.0'
тогда делай
пакет обновления кофе-скрипт-источник
Я пробовал все вышеперечисленные варианты, а также перепутал несколько их комбинаций, пока не нашел этот Rails-4, ExecJS :: ProgramError на Pages # как приветствие и выполнил несколько обновлений системных гемов, а также установку и обновление пакетов .
Я отменил все свои испытания и понизил свой исходный код сценария кофе, и он работает. Публикация здесь, чтобы помочь кому-либо еще, у кого может быть аналогичная проблема.
Обновление файлов в vendor / cache
coffee-script-source-1.8.0.gem Удаление устаревших файлов .gem из вендора / кеша coffee-script-source-1.9.1.1.gem Обновлен пакет!
источник
Для новичков вроде меня:
Измените строку 6 с:
'<% = javascript_include_tag' application ',' data-turbolinks-track '=> true%>'
к
Источник из учебника, чтобы исправить здесь
источник
<%= stylesheet_link_tag 'defaults', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'defaults', 'data-turbolinks-track': 'reload' %>
спасибо Леандро П.Быстрое и грязное решение: удалить
//= require_tree .
изapplication.js
.Как я объясняю в комментариях к вопросу, это на самом деле не решает основную проблему, которая вызывает ошибку, а просто обходит ее.
источник
Я использовал решение номер 2, потому что раньше у меня была эта ошибка, но в этом случае не сработало, затем я добавил
gem 'coffee-script-source', '1.8.0'
и беги
и моя проблема была исправлена
источник
Вот менее сложное решение для новичков:
Если вы просто работаете с руководством, вероятно, вы работаете с Gemfile по умолчанию (или почти с ним). Вы можете открыть его в текстовом редакторе и удалить знак фунта в начале этой строки:
Вам нужно будет перезапустить
bundle install
, что, скорее всего, загрузит несколько вещей. Но как только это произойдет, вы сможете без проблем запустить сервер.По крайней мере, у меня это сработало.
Кстати, это также работает в Ubuntu 12.04.
источник
Запуск Win 8 64-битных рельсов 4.2.5 ruby 2.1.7
Это сработало для меня
источник
Вы изменили расположение своего кода с C: \ Users \ this-user \ yo-app ?
Когда я был молод в рельсах, я создал приложение, и расположение моего приложения по умолчанию было C: \ Users \ Duncan \ my-app, а затем, когда я изменил свое приложение и поместил его в D: \ All-my-Apps -папка у меня была эта ошибка ....
Почесал затылок, пробовал 1,2,3 и больше ..... ничего! Пока я не вернул весь код в папку по умолчанию и, к моему удивлению, снова катался :)
На случай, если кому-то это может пригодиться (я не могу объяснить, почему это произошло, возможно, кто-то может без предположений)
источник