it-swarm.com.de

ExecJS :: RuntimeError unter Windows versucht, dem Rubytutorial zu folgen

UPDATE: Colin Vorschlag, die Zeile // = require_tree zu entfernen. hat das Problem behoben.

Ich habe über 2 Tage damit verbracht, jedem Vorschlag zu folgen und mein Problem zu beheben. Ich versuche, dem http://Ruby.railstutorial.org Buch auf Windows-Maschine zu folgen und kann für das Leben von mir nicht über den folgenden bösen Fehler hinauskommen.

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

Ich habe jeden Vorschlag ausprobiert, einschließlich der Installation von nodejs mit der msi, mit execjs 1.3.0 und anderen Dingen, an die ich mich nicht mehr erinnern kann. Hier ist die Gem-Datei

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''

und hier ist die 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>

Hier ist Konsoleninhalt

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)

Ich habe Devkit installiert und verschiedene Juwelen ausprobiert. Bitte schlagen Sie Änderungen vor, die mir bei der Entwicklung unter Windows helfen können. Ich habe rubyinstaller für alles benutzt.

Was vermisse ich?

101
user1687078

Mein Freund hat vor ein paar Monaten versucht, ein Rails= Tutorial für Win 8 RTM=) zu erstellen, und ist auf diesen Fehler gestoßen. Ich bin mir nicht sicher, ob dieses Problem auch in Windows 7 vorliegt , aber das kann helfen.

Optionen:

1) Entfernen von //= require_tree ./Ignorieren des Problems - Wie oben in ColinR angegeben, sollte diese Zeile kein Problem verursachen. Es gibt ein tatsächliches Problem mit ExecJS, das ordnungsgemäß mit der JavaScript-Laufzeit auf Ihrem System funktioniert, und das Entfernen dieser Zeile ignoriert diese Tatsache einfach.

2) Installation von Node.js/Running away - Viele Leute scheinen einfach Node.js zu installieren und diese anstelle der JavaScript-Laufzeit zu verwenden System. Dies ist zwar eine gültige Option, erfordert jedoch auch zusätzliche Software und vermeidet nur das ursprüngliche Problem, nämlich, dass ExecJS mit der bereits auf Ihrem System installierten JavaScript-Laufzeit nicht ordnungsgemäß funktioniert. Wenn die vorhandene JavaScript-Laufzeit auf Ihrem System funktionieren soll, warum sollte sie dann nicht funktionieren, anstatt mehr Software zu installieren? Laut dem ExecJS-Ersteller wird die bereits in Windows integrierte Laufzeit tatsächlich unterstützt ...

Mit ExecJS können Sie JavaScript-Code in Ruby ausführen. Es wählt automatisch die beste verfügbare Laufzeit für die Auswertung Ihres JavaScript-Programms aus und gibt das Ergebnis als Ruby Objekt zurück.

ExecJS unterstützt folgende Laufzeiten:

  • therubyracer - Google V8 in Ruby eingebettet
  • therubyrhino - Mozilla Rhino eingebettet in JRuby
  • Node.js
  • Apple JavaScriptCore - In Mac OS X enthalten
  • Microsoft Windows Script Host (JScript)

(von github.com/sstephenson/execjs#execjs)

3) Problem tatsächlich beheben/Lernen - Verwenden Sie die Kenntnisse der Optionen 1 und 2, um nach anderen Lösungen zu suchen. Ich kann Ihnen nicht sagen, wie viele Webseiten, die ich geschlossen habe, als ich Option 1 oder 2 sah, die akzeptierte Lösung waren, bevor ich tatsächlich Informationen über das Grundproblem fand, das wir hatten. Der einzige Grund, warum wir weiter gesucht haben, war, dass wir nicht glauben konnten, dass das Rails) -Team (1) eine Codezeile in jedes Gerüst-generierte Projekt einfügen würde, das ein Problem verursacht hat, oder (2) dies verlangen würde Wir installieren zusätzliche Software, um diese Standardcodezeile auszuführen, und sind schließlich zu einem Fix für unser Root-Problem gekommen (Ihre Meilen können variieren).

Das Update, das bei uns funktioniert hat: Auf dem System mit Problemen finden Sie ExecJS's runtimes.rb Datei. Es sieht aus wie dies . Erstellen Sie eine Kopie der gefundenen Datei für die Sicherung. Öffnen Sie die ursprüngliche Datei runtimes.rb zum Bearbeiten. Suchen Sie den Abschnitt, der mit der Zeile JScript = ExternalRuntime.new( Beginnt. In diesem Abschnitt entfernen Sie in der Zeile, die :command => "cscript //E:jscript //Nologo //U", Enthält, nur //U. Dann in der Zeile mit :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE - UTF-16LE in UTF-8 Ändern. Speichern Sie die Änderungen an der Datei. Dieser Abschnitt der Datei sollte nun lauten:

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
)

Stoppen Sie als Nächstes Ihren Rails Server und aktualisieren Sie die Seite in Ihrem Browser, die den ursprünglichen Fehler verursacht hat. Hoffentlich wird die Seite jetzt fehlerfrei geladen. Hier ist der ExecJS-Problem-Thread, in dem wir ursprünglich unsere Ergebnisse veröffentlicht haben: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

Wenn dies das Problem nicht behebt, können Sie die geänderte Datei runtimes.rb immer mit der Sicherungskopie überschreiben, die Sie (hoffentlich) erstellt haben, und alles wird wieder in den ursprünglichen Zustand versetzt. In diesem Fall sollten Sie Option 3 in Betracht ziehen und weiter suchen. Lassen Sie uns wissen, was letztendlich für Sie funktioniert. Wenn es nicht darum geht, den require_tree zu entfernen oder node.js zu installieren, läuft bereits eine Menge davon. :)

240
Kevin P

Hatte das gleiche Problem OS-Windows 8-Fehler "ExecJS :: RuntimeError ..." Lösung-fehlende Node.js

  1. installieren Sie Node.js von http://www.nodejs.org/download/
  2. Starte den Computer neu
14
snassr

Ich hatte dieses Problem und habe das Internet abgeschreckt. Ich verwende Windows 8 mit dieser Rails gem-Datei

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

Ging zu http://nodejs.org/download/ installiert - startete die Maschine neu und alles funktionierte.

12

Ich habe den Lernweg bevorzugt. Es scheint, dass das Problem von stammt

IO.popen(command, options) { |f| output = f.read }

rückgabe einer leeren Zeichenkette in execjs\external_runtine.rb (Zeile 173 in Version 1.4.0). Aus diesem Grund enthält die Fehlermeldung keinen Text. Die vorgeschlagenen Änderungen haben bei mir nicht funktioniert. Ich habe UTF-16LE In UTF-8 Geändert, aber es wurde immer noch eine leere Zeichenfolge zurückgegeben. Ich habe \\U Aus dem command entfernt - dies gab zumindest Text zurück, aber es war in der falschen Codierung - im Browser wurde er als chinesische Schriftzeichen angezeigt.

Laut diesem MSDN-Blogeintrag führt die Verwendung des Flags //U Und das Umleiten in eine Datei dazu, dass cscript das Ergebnis mit UTF-16 Zurückgibt.

Und dann funktionierte es magisch ( @ #% $ & ^ @ $ !!!?!?!) Mit command als "cscript //E:jscript //Nologo" Und encoding als "UTF-8". Naja.

5
cofiem

Für Windows-Benutzer funktioniert dies möglicherweise. Es gibt ein Problem mit Coffee-Script-Source> 1.9.0, das unter Windows ausgeführt wird.

Es scheint, als müsst ihr dies zu eurer Gemdatei hinzufügen:

juwel 'Kaffee-Skript-Quelle', '1.8.0'

dann mach

bundle Update Kaffee-Skript-Quelle

Ich habe alle oben genannten Optionen ausprobiert und auch ein paar Kombinationen daraus gemischt, bis ich dies fand Rails-4, ExecJS :: ProgramError in Pages # welcome und mehrere System-Gem-Updates und Bundle-Installationen durchgeführt hatte und Updates.

Ich habe alle meine Versuche rückgängig gemacht und meine Kaffee-Skript-Quelle herabgestuft, und es funktioniert. Hier posten, um anderen zu helfen, die möglicherweise ein ähnliches Problem haben.

Aktualisieren von Dateien im Vendor/Cache

coffee-script-source-1.8.0.gem Entfernen veralteter .gem-Dateien vom Hersteller/Cache coffee-script-source-1.9.1.1.gem Bundle aktualisiert!

4
DJSampat

Ich musste meinen nodejs-Ordner zu meiner Windows Path-Umgebungsvariablen hinzufügen. Öffnen Sie in Windows 8 die Systemsteuerung, gehen Sie zu System, Erweiterte Systemeinstellungen (links), klicken Sie links auf Umgebungsvariablen und bearbeiten Sie die Pfadvariable, um das Verzeichnis in Ihren nodejs-Ordner aufzunehmen (wahrscheinlich in den Programmdateien).

Natürlich müssen Sie Node.js installiert haben (verwenden Sie das Windows-Installationsprogramm ) und CoffeeScript über NPM installiert haben.

4
Evan

Ich weiß, dass dies eine sehr späte Antwort auf dieses Problem ist, aber ich bin auf etwas Ähnliches gekommen und bin den ganzen Weg gegangen, um zu verstehen, was das Problem wirklich verursacht hat.

Es stellte sich heraus, dass die Standard-Windows-JScript-Engine immer noch auf es3 läuft und viele Edelsteine ​​die Funktionen von es5 oder es6 nutzen. Leider gibt es in diesem Fall (wenn Sie ein Juwel oder einen Code verwenden, der die Funktionen von es5 oder es6 nutzt) keine Möglichkeit, ihn unter Windows mit der nativen js-Engine arbeiten zu lassen.

Dies ist der Grund, warum die Installation von node.js das Problem löst (node ​​ist mindestens es5).

Hoffe, dies kann einigen Leuten helfen, die mit einem Laufzeitfehler von jsexec zu kämpfen haben.

Mein 2-Cent-Rat ist, Node (sehr einfach) oder v8 zu installieren und den // = require_tree nicht zu entfernen.

Beachten Sie, dass Execjs bei Erkennung automatisch Node verwenden. Andernfalls erzwingen Sie seine Verwendung und fügen Sie im Boot-Modus Folgendes hinzu:

ENV['EXECJS_RUNTIME'] = 'Node'

So setzen Sie die Umgebung auf Knoten.

4
Dinuz

Für Anfänger wie mich:

  1. Navigieren Sie zu\app\views\layouts\application.html.erb
  2. Ändern Sie Zeile 6 von:

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

zu

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

Quelle aus dem Tutorial hier zu beheben

3
Leandro P.

Schnelle und schmutzige Lösung: Entfernen Sie //= require_tree . Aus application.js.

Wie ich in den Kommentaren zu der Frage erläutere, wird das zugrunde liegende Problem, das den Fehler verursacht, nicht gelöst, sondern nur umgangen.

2
Colin R

Ich habe die Lösung Nr. 2 verwendet, weil ich vorher diesen Fehler hatte, aber in dieser Situation nicht funktionierte, dann habe ich die hinzugefügt

gem 'coffee-script-source', '1.8.0'

und Renn

bundle install

und mein problem wurde behoben

2
Yuliem Alavez

Hier ist eine weniger komplizierte Lösung für Anfänger:

Wenn Sie nur das Tutorial durcharbeiten, arbeiten Sie wahrscheinlich mit der Standard-Gemfile (oder fast). Sie können es in Ihrem Texteditor öffnen und das Nummernzeichen vor dieser Zeile entfernen:

# gem 'therubyracer', :platforms => :Ruby

Sie müssen bundle install Erneut ausführen, wodurch wahrscheinlich einige Dinge heruntergeladen werden. Sobald dies der Fall ist, sollten Sie den Server problemlos starten können.

Zumindest hat das bei mir geklappt.

Dies funktioniert übrigens auch unter Ubuntu 12.04.

1
Karl Giesing

Haben Sie den Speicherort Ihres Codes von C:\Users\this-user\yo-app geändert?

Als ich jung war in Rails Ich habe eine App erstellt und der Standardspeicherort meiner App war C:\Users\Duncan\my-app und dann, wenn ich änderte meine-app und legte es in D:\All-my-Apps-Ordner ich hatte diesen Fehler ....

Ich habe mir am Kopf gekratzt, 1,2,3 und mehr ausprobiert ... nichts! Bis ich den gesamten Code an den Standardordner zurückgegeben habe und zu meinem Erstaunen war ich wieder am Rollen :)

Für den Fall, dass jemand dies nützlich findet (ich kann nicht erklären, warum das passiert ist, vielleicht kann es jemand ohne Spekulationen tun)

0
dancun chiriga

Laufen Win 8 64 Bit Rails 4.2.5 Ruby 2.1.7

Dieser hat bei mir funktioniert

0
Sumit Kumar