ExecJS::RuntimeError unter Windows beim Versuch, rubytutorial zu folgen

Lesezeit: 13 Minuten

ExecJSRuntimeError unter Windows beim Versuch rubytutorial zu folgen
Benutzer1687078

AKTUALISIEREN: Colins Vorschlag, die Zeile //= require_tree zu entfernen. hat das Problem behoben.

Ich habe über 2 Tage damit verschwendet, jedem Vorschlag zu folgen und mein Problem zu beheben. Ich versuche dem zu folgen http://ruby.railtutorial.org Buchen Sie auf einem Windows-Rechner und kann für mein ganzes Leben den folgenden bösen Fehler nicht überwinden.

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 dem msi, der Verwendung von execjs 1.3.0 und anderen Dingen, an die ich mich nicht einmal mehr erinnern kann. Hier ist das 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 session.js.kaffee

# 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/

Anwendung.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 Gems ausprobiert, aber bitte schlagen Sie Änderungen vor, die mir bei der Entwicklung unter Windows helfen können. Ich habe rubyinstaller für alles verwendet.

Was vermisse ich?

  • Könnten Sie versuchen, die Zeile zu entfernen //= require_tree . von application.js und sehen, ob der Fehler weiterhin besteht?

    – Colin R

    20. September 2012 um 20:54 Uhr

  • WOW …. das hat den Trick getan … vielen Dank Colin, das Entfernen der Zeile //= require_tree . hat das Problem behoben. Ich kann nicht erklären, was für eine Erleichterung das ist, aber können Sie bitte erklären, warum diese Zeile den Fehler verursacht?

    – Benutzer1687078

    20. September 2012 um 21:12 Uhr

  • Diese Zeile kompiliert alle .js.coffee Datei in app/assets/javascripts in JavaScript ein und fügen Sie es dann Ihrem Layout hinzu (jedoch nur im Entwicklungsmodus; im Produktionsmodus wird das kompilierte js zu Ihrer application.js Datei). Haben require_tree . sollte keine Fehler verursachen, also haben Sie irgendwie ein Problem mit einer der enthaltenen Dateien. Kannst du eine Liste mit allen Dateien in deinem posten? app/assets/javascripts Verzeichnis? Sie können auch versuchen, den Inhalt vollständig zu löschen sessions.js.coffee und wieder hinzufügen //= require_tree . und schau ob der Fehler immer noch besteht.

    – Colin R

    21. September 2012 um 13:25 Uhr

  • @ColinR, Sie sollten dies als Antwort auf die Frage hinzufügen. Ich hatte das gleiche Problem und wenn ich die Kommentare nicht durchsucht hätte, hätte ich weiter nach einer anderen Frage gesucht.

    – Emanuel F

    10. November 2012 um 18:20 Uhr

1646307314 501 ExecJSRuntimeError unter Windows beim Versuch rubytutorial zu folgen
Kevin P

Mein Freund versuchte vor ein paar Monaten ein Rails-Tutorial auf Win 8 RTM und stieß auf diesen Fehler. Ich bin mir nicht sicher, ob dieses Problem auch in Windows 7 besteht, aber das könnte helfen.

Optionen:

1) Entfernen //= require_tree . / Problem ignorieren – Wie ColinR oben sagte, sollte diese Zeile überhaupt 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 / Weglaufen – Viele Leute scheinen am Ende nur Node.js zu installieren und das anstelle der bereits auf ihrem System vorhandenen JavaScript-Laufzeit zu verwenden. 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 vorhandenen JavaScript-Laufzeit nicht ordnungsgemäß funktioniert. Wenn die vorhandene JavaScript-Laufzeit auf Ihrem System funktionieren soll, warum nicht dafür sorgen, dass sie funktioniert, anstatt weitere 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 von Ruby ausführen. Es wählt automatisch die beste verfügbare Laufzeit aus, um Ihr JavaScript-Programm zu evaluieren, und gibt Ihnen dann das Ergebnis als Ruby-Objekt zurück.

ExecJS unterstützt diese Laufzeiten:

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

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

3) Das Problem tatsächlich beheben / Lernen – Verwenden Sie das Wissen aus den Optionen 1 und 2, um nach anderen Lösungen zu suchen. Ich kann Ihnen nicht sagen, wie viele Webseiten ich geschlossen habe, als ich sah, dass Option 1 oder 2 die akzeptierte Lösung war, bevor ich tatsächlich Informationen über das eigentliche Problem 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 vom Gerüst generierte Projekt einfügen würde, das ein Problem verursachte, oder (2) verlangte, dass wir zusätzliche Software installieren, nur um diesen Standard auszuführen Codezeile. Und so kamen wir schließlich zu einer Lösung für unser Grundproblem (Ihre Meilen können variieren).

Der Fix, der für uns funktioniert hat:
Suchen Sie auf dem System mit Problemen nach ExecJS Laufzeiten.rb Datei. Es sieht aus wie Das. Erstellen Sie eine Kopie der gefundenen Datei zur Sicherung. Öffnen Sie die ursprüngliche runtimes.rb zum Bearbeiten. Suchen Sie den Abschnitt, der mit der Zeile beginnt JScript = ExternalRuntime.new(. In diesem Abschnitt in der Zeile mit :command => "cscript //E:jscript //Nologo //U", – entferne das //U nur. Dann auf der Zeile mit :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE – Ändern Sie UTF-16LE in UTF-8 . Speichern Sie die Änderungen in 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, starten Sie ihn neu und aktualisieren Sie die Seite in Ihrem Browser, die den ursprünglichen Fehler verursacht hat. Hoffentlich lädt die Seite jetzt fehlerfrei. Hier ist der ExecJS-Problemthread, in dem wir ursprünglich unsere Ergebnisse gepostet haben: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

Wenn dies das Problem nicht behoben hat, können Sie die geänderte runtimes.rb jederzeit mit der von Ihnen (hoffentlich) erstellten Sicherungskopie überschreiben, und alles ist wieder am Anfang. Ziehen Sie in diesem Fall Option 3 in Betracht und suchen Sie weiter. Lassen Sie uns wissen, was letztendlich für Sie funktioniert … es sei denn, es wird der require_tree entfernt oder node.js installiert, davon ist bereits eine Menge im Umlauf. 🙂

  • Ich wünschte, ich könnte Ihnen +50 Stimmen geben. Das hat mich zu lange geärgert, als ich versucht habe, therubyracer für Windows aufzusetzen, zu erkennen, dass es nicht unterstützt wird, und dann versucht habe, ExecJS dazu zu bringen, richtig zu laden. Vielen Dank, dass Sie sich die Zeit genommen haben, mir beim Lernen zu helfen und das Problem nicht zu verschleiern! Für diejenigen, die sich fragen, können Sie den Speicherort der Datei runtimes.rb abrufen, indem Sie “gem which execjs” eingeben.

    – Michael

    3. März 2013 um 17:29 Uhr


  • Ich musste die Bundle-Installation ausführen, nachdem ich diese Änderung vorgenommen hatte, damit sie funktionierte. Wenn also jemand diese Lösung ausprobiert und es auf den ersten Blick nicht zu funktionieren scheint, versuchen Sie es unbedingt! Ich verwende Windows 8 64-Bit und es hat bei mir funktioniert! Danke

    – Peter Kirby

    11. April 2013 um 1:24 Uhr

  • +1 hat die Hektik vor der Installation des Knotens bewahrt. Option 3 funktioniert bei mir unter Windows 8 64 Bit

    – Sami

    27. April 2013 um 10:41 Uhr

  • Kommentar zu Option 3: github.com/sstephenson/execjs/issues/111 sagt, dass wir das Problem lösen können, indem wir uns ändern UTF-16LE zu UTF-16 ohne die zu entfernen //U Möglichkeit. Ich habe es bestätigt.

    – Tsutomu

    14. September 2013 um 3:51 Uhr

  • Ich sehe viel wie, aber nicht viel warum. Warum macht das Ändern dessen, was wie ein Zeichensatz aussieht, nur unter Windows einen Unterschied? Ich bin neugierig, das ist alles.

    – Nathan Tempelman

    3. Juni 2014 um 19:13 Uhr

Hatte das gleiche Problem OS-Windows 8 Error-‘ExecJS::RuntimeError…’ Solution-Fehlende Node.js

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

  • dieser hat bei mir funktioniert. Weiß hier jemand, warum die Installation von node.js funktioniert hat?

    – mpalencia

    1. Januar 2017 um 14:30 Uhr

ExecJSRuntimeError unter Windows beim Versuch rubytutorial zu folgen
gustavoanalytics

Ich hatte dieses Problem und habe das Internet durchforstet. 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 – die Maschine neu gestartet und alles funktionierte.

  • Ich habe den Knoten wie vorgeschlagen installiert, musste nicht neu starten, sondern nur ein neues cmd-Fenster öffnen (schätze, damit auf die neuen Pfade zugegriffen werden kann).

    – Wille

    9. November 2015 um 22:52 Uhr

Ich favorisierte die Lernen Route. Es scheint, dass das Problem herrührt

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

Rückgabe eines leeren Strings in execjs\external_runtine.rb (Zeile 173 in Version 1.4.0). Deshalb enthält die Fehlermeldung keinen Text. Die vorgeschlagenen Änderungen haben bei mir nicht funktioniert. ich habe mich verändert UTF-16LE zu UTF-8, aber es wurde immer noch eine leere Zeichenfolge zurückgegeben. Ich entfernte \\U von dem command – das hat zumindest Text zurückgegeben, aber es war in der falschen Codierung – im Browser wurde es als chinesische Schriftzeichen angezeigt.

Entsprechend diesen MSDN-BlogbeitragVerwendung der //U Flag und Umleitung in eine Datei bewirkt cscript um das Ergebnis mit zurückzugeben UTF-16.

Und dann funktionierte es auf magische Weise (@#%$&^@$%!!!?!?!) verwenden command als "cscript //E:jscript //Nologo" und encoding als "UTF-8". Nun ja.

Ich musste meinen nodejs-Ordner zu meiner Windows-Pfad-Umgebungsvariable 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 Programme).

Natürlich muss Node.js installiert sein (verwenden Sie die Windows Installer) und haben CoffeeScript über NPM installiert.

1646307315 320 ExecJSRuntimeError unter Windows beim Versuch rubytutorial zu folgen
Dinuz

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

Es stellte sich heraus, dass die standardmäßige Windows-JScript-Engine immer noch auf es3 läuft und viele Gems die Vorteile von es5- oder es6-Funktionen nutzen. Wenn dies passiert (Sie verwenden ein Gem oder ein Stück Code, das es5- oder es6-Funktionen nutzt), gibt es leider keine Möglichkeit, es unter Windows mit der nativen js-Engine funktionieren zu lassen.

Aus diesem Grund löst die Installation von node.js das Problem (Knoten ist mindestens es5).

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

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

Beachten Sie, dass execjs automatisch node verwenden, wenn sie erkannt werden. Erzwingen Sie andernfalls seine Verwendung, indem Sie beim Booten Folgendes hinzufügen:

ENV['EXECJS_RUNTIME'] = 'Node'

Um die env auf node.

1646307315 530 ExecJSRuntimeError unter Windows beim Versuch rubytutorial zu folgen
Gemeinschaft

Für Windows-Benutzer kann dies funktionieren. Es gibt ein Problem mit coffee-script-source >1.9.0 unter Windows.

Es scheint, dass Sie dies zu Ihrem Gemfile hinzufügen müssen:

gem ‘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 davon durcheinander gebracht, bis ich dieses Rails-4, ExecJS::ProgramError in Pages#welcome gefunden und mehrere System-Gem-Updates und Bundle-Installationen und -Updates durchgeführt hatte.

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

Aktualisieren von Dateien im Anbieter/Cache

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

  • Ich habe Option 3 der akzeptierten Antwort ausprobiert, dann einen “Argumentfehler” erhalten, versucht, nodejs zu installieren, hat nicht geholfen, nodejs zu Pfadvariablen hinzugefügt (ich bin auf Win10) und schließlich Ihren Ansatz ausprobiert. Hat funktioniert! Danke

    – Elch

    19. Februar 2017 um 12:07 Uhr

922960cookie-checkExecJS::RuntimeError unter Windows beim Versuch, rubytutorial zu folgen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy