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?
Author: Community, 2012-09-21

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. :)

 239
Author: Kevin P,
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

  1. Zainstaluj węzeł.js z http://www.nodejs.org/download/
  2. Uruchom ponownie komputer
 14
Author: snassr,
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.

 12
Author: gustavoanalytics,
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óż.

 5
Author: cofiem,
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.

 4
Author: Evan,
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ł.

 4
Author: Dinuz,
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!

 4
Author: DJSampat,
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:

  1. Przejdź do \app \ views \ layouts \ application.html.erb
  2. Zmień linię 6 z:

    ' true %> '

Do

<%= javascript_include_tag 'defaults', 'data-turbolinks-track' => true %>

Źródło z tutoriala do poprawki tutaj

 3
Author: Leandro P.,
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.

 2
Author: Colin R,
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

 2
Author: Yuliem Alavez,
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.

 1
Author: Karl Giesing,
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

This one worked for me

 0
Author: Sumit Kumar,
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)

 0
Author: dancun chiriga,
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