AKTUALIZACJA: sugestia Colina dotycząca usunięcia linii // = require_tree. rozwiązał problem.
Zmarnowałem ponad 2 dni, próbując zastosować się do każdej sugestii i naprawić mój problem. Próbuję śledzić książkę http://ruby.railstutorial.org na komputerze z systemem Windows i do końca życia nie mogę ominąć tego okropnego błędu.
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
Wypróbowałem każdą sugestię, w tym instalację nodejs z msi, użycie execjs 1.3.0 i innych rzeczy, których nawet nie pamiętam. Oto plik klejnotów
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''
a tutaj jest session.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>
Oto zawartość konsoli
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)
Zainstalowałem Devkit i wypróbowałem różne perełki, ale proszę zasugeruj zmiany, które pomogą mi rozwijać się w systemie Windows. Do wszystkiego użyłem rubyinstaller.
czego mi brakuje?
javascript
ruby-on-rails
ruby
windows
asset-pipeline
user1687078
źródło
źródło
//= require_tree .
zapplication.js
i sprawdzić, czy błąd nadal występuje?.js.coffee
plik wapp/assets/javascripts
JavaScript, a następnie dodaje go do układu (ale tylko w trybie programistycznym; w trybie produkcyjnym skompilowanyapplication.js
plik js jest dodawany do pliku). Nierequire_tree .
powinno to powodować błędów, więc w jakiś sposób masz problem z jednym z dołączanych plików. Czy możesz opublikować listę wszystkich plików w swoimapp/assets/javascripts
katalogu? Możesz także spróbować całkowicie usunąć zawartośćsessions.js.coffee
i dodać z powrotem//= require_tree .
i sprawdzić, czy błąd nadal występuje.Odpowiedzi:
Mój przyjaciel próbował samouczka Rails na Win 8 RTM kilka miesięcy temu i napotkał ten błąd. Nie jestem pewien, czy ten problem występuje również w systemie Windows 7, ale może to pomóc.
Opcje:
1) Usunięcie
//= require_tree .
/ zignorowanie problemu - Jak stwierdził ColinR powyżej, ten wiersz nie powinien powodować problemów. Występuje rzeczywisty problem z poprawnym działaniem ExecJS ze środowiskiem wykonawczym JavaScript w twoim systemie, a usunięcie tego wiersza jest po prostu ignorowaniem tego faktu.2) Instalowanie Node.js / Ucieczka - wydaje się, że wiele osób po prostu instaluje Node.js i używa go zamiast środowiska wykonawczego JavaScript, które jest już w ich systemie. Chociaż jest to prawidłowa opcja, wymaga również dodatkowego oprogramowania i pozwala tylko uniknąć pierwotnego problemu, którym jest to, że ExecJS nie działa poprawnie ze środowiskiem wykonawczym JavaScript już zainstalowanym w systemie. Jeśli istniejące środowisko wykonawcze JavaScript w twoim systemie ma działać, dlaczego nie sprawić, by działało zamiast instalować więcej oprogramowania? Według twórcy ExecJS, środowisko uruchomieniowe już wbudowane w Windows jest w rzeczywistości obsługiwane ...
3) Rzeczywiste rozwiązanie problemu / nauka - skorzystaj z wiedzy o opcjach 1 i 2, aby znaleźć inne rozwiązania. Nie mogę powiedzieć, ile stron internetowych zamknąłem, widząc opcje 1 lub 2, które były akceptowanym rozwiązaniem przed znalezieniem informacji o głównym problemie, który mieliśmy. Jedynym powodem, dla którego szukaliśmy, było to, że nie mogliśmy uwierzyć, że zespół Railsów (1) wstawi wiersz kodu do każdego projektu generowanego przez szkielet, który spowodował problem, lub (2) wymagał zainstalowania dodatkowego oprogramowania tylko po to, aby uruchomić to domyślne linia kodu. I tak w końcu dotarliśmy do rozwiązania naszego problemu głównego (Twoje mile mogą się różnić).
Fix, który pracował dla nas: W systemie mającym problemy, znaleźć ExecJS męska runtimes.rb pliku. Wygląda jak ten . Wykonaj kopię znalezionego pliku w celu wykonania kopii zapasowej. Otwórz oryginalny plik runtimes.rb do edycji. Znajdź sekcję, która zaczyna się od linii
JScript = ExternalRuntime.new(
. W tej sekcji, w wierszu zawierającym:command => "cscript //E:jscript //Nologo //U",
- usuń//U
jedyne. Następnie w wierszu zawierającym:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
- zmień UTF-16LE naUTF-8
. Zapisz zmiany w pliku. Ta sekcja pliku powinna teraz brzmieć:Następnie zatrzymaj i zrestartuj serwer Railsów i odśwież stronę w przeglądarce, która spowodowała pierwotny błąd. Miejmy nadzieję, że strona ładuje się teraz bez błędów. Oto wątek dotyczący problemu ExecJS, w którym pierwotnie opublikowaliśmy nasze wyniki: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
Jeśli to nie rozwiąże problemu, zawsze możesz nadpisać zmodyfikowany plik runtimes.rb utworzoną (miejmy nadzieję) kopią zapasową i wszystko wróci do normy. W takim przypadku rozważ opcję 3 i kontynuuj wyszukiwanie. Daj nam znać, co ostatecznie zadziała w Twoim przypadku ... chyba, że usunie to require_tree lub zainstaluje node.js, wiele tego już się dzieje. :)
źródło
UTF-16LE
naUTF-16
bez usuwania tej//U
opcji. Potwierdziłem to.Wystąpił ten sam problem System operacyjny - błąd Windows 8 - rozwiązanie „ExecJS :: RuntimeError ...” - brak Node.js
źródło
Miałem ten problem i przeglądałem internet. Używam Windows 8 z tym plikiem gem rails
Poszedłem do http://nodejs.org/download/ zainstalowany - zrestartowałem maszynę i wszystko działało.
źródło
Wolałem ścieżkę uczenia się . Wygląda na to, że problem wynika z
zwracanie pustego ciągu w
execjs\external_runtine.rb
(wiersz 173 w wersji 1.4.0). Dlatego komunikat o błędzie nie zawiera tekstu. Sugerowane zmiany nie zadziałały dla mnie. ZmieniłemUTF-16LE
naUTF-8
, ale nadal zwracał pusty ciąg. Usunąłem\\U
zcommand
- przynajmniej ten zwrócony tekst, ale był w złym kodowaniu - w przeglądarce wyświetlał się jako chińskie znaki.Zgodnie z tym wpisem na blogu MSDN użycie
//U
flagi i przekierowanie do pliku powodujecscript
zwrócenie wyniku przy użyciuUTF-16
.A potem magicznie zadziałało ( @ #% $ & ^ @ $% !!!?!?!) Używając
command
as"cscript //E:jscript //Nologo"
iencoding
as"UTF-8"
. No cóż.źródło
Musiałem dodać folder nodejs do mojej zmiennej środowiskowej Windows Path. W Windows 8 otwórz Panel sterowania, przejdź do System, Zaawansowane ustawienia systemu (po lewej), kliknij Zmienne środowiskowe po lewej stronie i edytuj zmienną Path, aby uwzględnić katalog do folderu nodejs (prawdopodobnie w Program Files).
Oczywiście musisz mieć zainstalowany Node.js (użyj instalatora Windows ) oraz CoffeeScript przez NPM.
źródło
Wiem, że to bardzo późna odpowiedź na ten problem, ale doszedłem do czegoś podobnego i poszedłem pełną ścieżką, aby zrozumieć, co tak naprawdę jest przyczyną problemu.
Okazało się, że domyślny silnik jscript systemu Windows nadal działa na es3, a wiele klejnotów korzysta z funkcji es5 lub es6. Niestety, jeśli tak się stanie (używasz klejnotu lub fragmentu kodu, który wykorzystuje funkcje es5 lub es6), nie ma możliwości, aby działał w systemie Windows z natywnym silnikiem js.
To jest powód, dla którego instalacja node.js rozwiązuje problem (węzeł to co najmniej es5).
Mam nadzieję, że może to pomóc niektórym ludziom borykającym się z błędem wykonania jsexec.
Moje 2 centy radzę zainstalować node (bardzo łatwe) lub zainstalować v8 i nie usuwać // = require_tree.
Uwaga: pliki execj automatycznie użyją węzła, jeśli zostaną wykryte. W przeciwnym razie wymuś jego użycie, dodając do bootowania coś takiego:
Aby ustawić env na node.
źródło
W przypadku użytkowników systemu Windows może to działać. Wystąpił problem z coffee-script-source> 1.9.0 uruchomionym w systemie Windows.
Wygląda na to, że musisz dodać to do swojego pliku gem:
gem 'coffee-script-source', '1.8.0'
to zrób
aktualizacja pakietu coffee-script-source
Wypróbowałem wszystkie powyższe opcje, a także pomieszałem kilka ich kombinacji, aż znalazłem ten Rails-4, ExecJS :: ProgramError w Pages # welcome i zrobiłem wiele aktualizacji systemowych klejnotów oraz instalacje i aktualizacje pakietów.
Cofnąłem wszystkie moje próby i obniżyłem moje źródło skryptu kawy i działa. Publikowanie tutaj, aby pomóc każdemu, kto może mieć podobny problem.
Aktualizowanie plików w dostawcy / pamięci podręcznej
coffee-script-source-1.8.0.gem Usuwanie nieaktualnych plików .gem z dostawcy / pamięci podręcznej coffee-script-source-1.9.1.1.gem Zaktualizowany pakiet!
źródło
Dla początkujących takich jak ja:
Zmień wiersz 6 z:
'<% = javascript_include_tag' application ',' data-turbolinks-track '=> true%>'
do
Źródło z samouczka do naprawienia tutaj
źródło
<%= stylesheet_link_tag 'defaults', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'defaults', 'data-turbolinks-track': 'reload' %>
dzięki Leandro P.Szybkie i brudne rozwiązanie: usuń
//= require_tree .
zapplication.js
.Jak wyjaśniam w komentarzach do pytania, w rzeczywistości nie rozwiązuje to podstawowego problemu, który powoduje błąd, ale po prostu go omija.
źródło
Użyłem rozwiązania numer 2 ponieważ wcześniej miałem ten błąd, ale w tej lokalizacji nie działało to dodałem
gem 'coffee-script-source', '1.8.0'
i biegnij
i mój problem został rozwiązany
źródło
Oto mniej skomplikowane rozwiązanie dla początkujących:
Jeśli dopiero pracujesz nad samouczkiem, prawdopodobnie pracujesz z domyślnym plikiem Gemfile (lub prawie). Możesz go otworzyć w edytorze tekstu i usunąć znak funta z początku tego wiersza:
Będziesz musiał ponownie uruchomić
bundle install
, co prawdopodobnie spowoduje pobranie kilku rzeczy. Ale kiedy to nastąpi, powinieneś być w stanie uruchomić serwer bez żadnego problemu.Przynajmniej to zadziałało dla mnie.
Nawiasem mówiąc, działa to również na Ubuntu 12.04.
źródło
Uruchamianie 64-bitowych szyn Win 8 4.2.5 Ruby 2.1.7
Ten pracował dla mnie
źródło
Czy zmieniłeś lokalizację swojego kodu z C: \ Users \ this-user \ yo-app ?
Kiedy byłem młody w Railsach, utworzyłem aplikację i domyślną lokalizacją mojej aplikacji było C: \ Users \ Duncan \ my-app, a potem, kiedy zmieniłem moją-aplikację i umieściłem ją w D: \ All-my-Apps -folder miałem ten błąd ....
Podrapałem się w głowę, spróbowałem 1,2,3 i więcej ..... nic! Dopóki nie wróciłem całego kodu do domyślnej lokalizacji folderu i ku mojemu zdziwieniu znowu się toczyłem :)
Na wypadek, gdyby ktoś uznał to za przydatne (nie potrafię wyjaśnić, dlaczego tak się stało, może ktoś może bez spekulacji)
źródło