ExecJS:: RuntimeError w systemie Windows próbuje podążać za rubytutorial
Aktualizacja: Colin 's sugestia usunięcia linii / / = require_tree . Naprawiono problem.
Zmarnowałem ponad 2 dni próbując podążać za każdą sugestią i naprawić mój problem. Staram się podążać za http://ruby.railstutorial.org książka na komputerze z systemem windows i nie może na życie mnie ominąć następujący paskudny błąd.
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
Próbowałem każdej sugestii, w tym instalacji nodejs z msi, używając execjs 1.3.0 i innych rzeczy, których już nie pamiętam. Oto plik gem
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 oto sesje .js.kawa
# 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/
Podanie.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
Podanie.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ę zasugerować zmiany, które mogą pomóc mi rozwinąć się w systemie windows. Używałem rubyinstaller do wszystkiego.
Co mi umyka?13 answers
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) Usuwanie //= require_tree .
/ ignorowanie problemu - Jak ColinR powiedział powyżej, ta linia nie powinna powodować problemu w pierwszej kolejności. Istnieje rzeczywisty problem z ExecJS działa poprawnie z uruchomieniem JavaScript w systemie i usunięcie tej linii jest po prostu ignorowanie ten fakt.
2) Instalowanie Węzła.js / Running away - Wiele osób wydaje się po prostu instalować Node.js i używając tego zamiast środowiska uruchomieniowego JavaScript już w swoim systemie. Chociaż jest to ważna opcja, wymaga również dodatkowego oprogramowania i unika tylko oryginalnego problemu, który polega na tym, że ExecJS nie działa poprawnie z uruchomieniem JavaScript już w systemie. Jeśli istniejące środowisko uruchomieniowe JavaScript w systemie ma działać, dlaczego nie sprawić, aby działało zamiast instalować więcej oprogramowania? Według kreatora ExecJS, środowisko uruchomieniowe już wbudowane w System Windows jest w rzeczywistości obsługiwane...
ExecJS pozwala na uruchamianie kodu JavaScript z Ruby. Automatycznie wybiera najlepsze dostępne środowisko wykonawcze do oceny programu JavaScript, a następnie zwraca wynik jako obiekt Ruby.
ExecJS obsługuje te środowiska uruchomieniowe:
- therubyracer-Google V8 wbudowany w Ruby
- therubyrhino-Mozilla Rhino wbudowany w JRuby
- węzeł.js
- Apple JavaScriptCore-dołączony do Mac OS X
- Microsoft Windows Script Host (JScript)
(od github.com/sstephenson/execjs#execjs )
3) Naprawienie problemu / uczenie się - skorzystaj ze znajomości opcji 1 i 2, aby wyszukać inne rozwiązania. Nie mogę powiedzieć, ile stron internetowych zamknąłem po obejrzeniu opcji 1 lub 2 było zaakceptowanym rozwiązaniem przed znalezieniem informacje 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 (1) wstawi linię kodu w każdym wygenerowanym przez rusztowanie projekcie, który spowodował problem, lub (2) zażąda zainstalowania dodatkowego oprogramowania, aby uruchomić tę domyślną linię kodu. I tak w końcu udało nam się naprawić nasz główny problem (mile mogą się różnić).
Fix, który działał dla nas:
Na system mający problemy, znajdź ExecJS runtimes.plik RB. Wygląda jak to . Utwórz kopię znalezionego pliku do kopii zapasowej. Otwórz oryginalne czasy uruchamiania.rb do edycji. Znajdź sekcję zaczynającą się od linii JScript = ExternalRuntime.new(
. W tej sekcji, w linii zawierającej :command => "cscript //E:jscript //Nologo //U",
- Usuń tylko //U
. Następnie w linii zawierającej :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
- Zmień UTF-16LE na UTF-8
. Zapisz zmiany w pliku. Ta sekcja pliku powinna teraz brzmieć:
JScript = ExternalRuntime.new(
:name => "JScript",
:command => "cscript //E:jscript //Nologo",
:runner_path => ExecJS.root + "/support/jscript_runner.js",
:encoding => 'UTF-8' # CScript with //U returns UTF-16LE
)
Następnie zatrzymaj się, a następnie uruchom ponownie serwer Rails i odśwież stronę w swoim przeglądarka, która wywołała oryginalny błąd. Mam nadzieję, że strona ładuje się bez błędów. Oto wątek wydania ExecJS, w którym pierwotnie zamieściliśmy nasze wyniki: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
Jeśli to nie rozwiązało problemu, zawsze możesz zastąpić zmodyfikowane czasy uruchamiania.rb z kopii zapasowej, którą (mam nadzieję) zrobiłeś i wszystko wróci do punktu wyjścia. W takim przypadku rozważ opcję 3 i szukaj dalej. Daj nam znać, co ostatecznie pasuje ci.. chyba że usuwa Wymaganie lub instaluje węzeł.js, dużo tego już się dzieje. :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-18 03:39:37
Miał ten sam problem OS-Windows 8 Błąd - ' ExecJS:: RuntimeError...' Rozwiązanie-brakujący węzeł.js
- Zainstaluj węzeł.js z http://www.nodejs.org/download/
- Uruchom ponownie komputer
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-19 23:49:02
Miałem taki problem i przeszukiwałem internet uruchamiam Windows 8 z tym plikiem rails gem
source 'https://rubygems.org'
gem 'rails', '3.2.9'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :development do gem 'sqlite3', '1.3.5'
end
# Gems used only for assets and not required # in production environments by default.
group :assets do
gem 'sass-rails', '3.2.5'
gem 'coffee-rails', '3.2.2'
gem 'uglifier', '1.2.3'
end
gem 'jquery-rails', '2.0.2'
group :production do
gem 'pg', '0.12.2'
end
Poszedł do http://nodejs.org/download / zainstalowany-zrestartował maszynę i wszystko działało.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-04 08:19:38
Faworyzowałem naukę . Wydaje się, że problem wynika z
IO.popen(command, options) { |f| output = f.read }
Zwracanie pustego ciągu w execjs\external_runtine.rb
(linia 173 w wersji 1.4.0). Dlatego komunikat o błędzie nie zawiera tekstu. Sugerowane zmiany nie zadziałały dla mnie. Zmieniłem UTF-16LE
na UTF-8
, ale nadal zwraca pusty łańcuch. Usunąłem \\U
z command
- Ten przynajmniej zwrócił tekst, ale był w złym kodowaniu - w przeglądarce wyświetlał się jako chińskie znaki.
Według ten wpis na blogu MSDN , użycie znacznika //U
i przekierowanie do pliku powoduje, że cscript
zwraca wynik używając UTF-16
.
I wtedy, magicznie, zadziałało (@#%$&^@$%!!!?!?!) używając command
jako "cscript //E:jscript //Nologo"
i encoding
jako "UTF-8"
. No cóż.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-29 00:01:38
Musiałem dodać mój folder nodejs do zmiennej środowiskowej Windows Path. W systemie Windows 8 otwórz Panel sterowania, przejdź do System, Advanced System settings (po lewej), kliknij zmienne środowiskowe po lewej stronie i edytuj zmienną ścieżkę, aby dołączyć katalog do folderu nodejs (prawdopodobnie w plikach programów).
Oczywiście musisz mieć węzeł.zainstalowane js (użyj Windows installer ) i zainstalowane CoffeeScript przez NPM.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-22 22:05:35
Wiem, że jest to bardzo późna odpowiedź na ten problem, ale dostałem coś podobnego i poszedłem pełną ścieżką, aby zrozumieć, co tak naprawdę spowodowało problem.
Okazało się, że domyślny silnik windows jscript jest nadal na es3, a wiele klejnotów korzysta z funkcji es5 lub es6. Niestety, jeśli tak się stanie (używasz klejnotu lub kawałka kodu, który wykorzystuje funkcje es5 lub es6), nie ma sposobu, aby pozwolić mu działać w systemie windows z natywnym silnikiem js.
To jest powód instalacji node.js rozwiązuje problem (node to co najmniej es5).
Mam nadzieję, że może to pomóc niektórym ludziom zmagającym się z błędem uruchomieniowym jsexec.
Moje 2 grosze radzą, aby zainstalować node (bardzo łatwo) lub zainstalować v8, a nie usuwać //=require_tree.
Uwaga execjs automatycznie użyje węzła, jeśli zostanie wykryty. W przeciwnym razie wymuś jego użycie, dodając w boocie coś w stylu:
ENV['EXECJS_RUNTIME'] = 'Node'
Aby ustawić ENV na węzeł.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-20 23:43:57
Dla użytkowników windows może to zadziałać. Problem z uruchomieniem coffee-script-source >1.9.0 w systemie windows.
Wygląda na to, że musisz dodać to do swojego gemfile:
Gem 'coffee-script-source', '1.8.0'
To zrób
Bundle update coffee-script-source
Wypróbowałem wszystkie powyższe opcje, a także pomieszałem kilka ich kombinacji, aż znalazłem Rails-4, ExecJS::ProgramError na stronach#welcome i zrobiłem wiele aktualizacji klejnotów systemowych i pakiety instalacyjne i aktualizacje.
Cofnąłem wszystkie próby i obniżyłem kod źródłowy skryptu kawowego i działa. Zamieszczanie tutaj, aby pomóc każdemu, kto może mieć podobny problem.
Aktualizacja plików w vendor / cache
Coffee-script-source-1.8.0.klejnot usuwający nieaktualne .pliki gem od dostawcy/cache coffee-script-source-1.9.1.1.aktualizacja zestawu klejnotów!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:49
Dla początkujących jak ja:
- Przejdź do \app \ views \ layouts \ application.html.erb
-
Zmień linię 6 z:
' true %> '
Do
<%= javascript_include_tag 'defaults', 'data-turbolinks-track' => true %>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-12 15:45:04
Szybkie i brudne rozwiązanie: Usuń //= require_tree .
z application.js
.
Jak wyjaśniam w komentarzach do pytania, to tak naprawdę nie rozwiązuje podstawowego problemu, który powoduje błąd, ale po prostu go pomija.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 16:54:56
Użyłem rozwiązania numer 2, ponieważ wcześniej miałem ten błąd, ale w tym ocation nie działa, następnie dodałem
gem 'coffee-script-source', '1.8.0'
And run
bundle install
I mój problem został rozwiązany
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-13 20:31:07
Oto mniej skomplikowane rozwiązanie, dla początkujących:
Jeśli pracujesz tylko przez samouczek, prawdopodobnie pracujesz z domyślnym Gemfile (lub bardzo blisko). Możesz go otworzyć w edytorze tekstu i usunąć znak pound z przodu tej linii:
# gem 'therubyracer', :platforms => :ruby
Będziesz musiał ponownie uruchomić bundle install
, który prawdopodobnie pobierze kilka rzeczy. Ale gdy to zrobi, powinieneś być w stanie uruchomić serwer bez żadnego problemu.
Przynajmniej, że pracował dla ja.
To działa również na Ubuntu 12.04, nawiasem mówiąc.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 01:09:36
Running Win 8 64 bit rails 4.2.5 ruby 2.1.7
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:01
Czy zmieniłeś lokalizację kodu z C:\Users\this-user\yo-app ?
Kiedy byłem młody w rails 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ę po głowie, próbowałem 1,2,3 i więcej .....nic! Dopóki nie zwróciłem całego kodu do domyślnej lokalizacji folderu i ku mojemu zdziwieniu, znowu toczyłem:)
W przypadku ktoś może uznać to za przydatne (nie mogę wyjaśnić, dlaczego tak się stało, może ktoś może bez spekulacji)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-15 06:32:50