it-swarm.com.de

ExecJS :: RuntimeError in Benutzer # Index (RoR)

Führen Sie einfach den Befehl "Gerüstbenutzer generieren" aus.

Dann gehe ich zu localhost:3000/users/ und sehe folgendes:

 ExecJS::RuntimeError in Users#index

Showing C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/views/layouts/application.html.erb where line #6 raised:


  (in C:/Users/TheOnlyUser/Desktop/NMS/nms2/app/assets/javascripts/ads.js.coffee)

Extracted source (around line #6):

3: <head>
4:   <title>Nms2</title>
5:   <%= stylesheet_link_tag    "application", :media => "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>
9: <body>

Rails.root: C:/Users/TheOnlyUser/Desktop/NMS/nms2
Application Trace | Framework Trace | Full Trace

app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___753556572_43068540'
app/controllers/users_controller.rb:7:in `index'
...

Was heißt das alles?

AKTUALISIEREN:

Das ist unter Windows 8. Windows 7 gibt diese Fehler nicht aus.

31
user1837021

Mein Freund hat vor einigen Monaten ein Rails-Tutorial zu Win 8 RTM versucht und ist auf diesen Fehler gestoßen. Nicht sicher, ob dieses Problem auch in Windows 7 vorliegt, dies kann jedoch hilfreich sein.

Optionen:

1) Entfernen von //= require_tree ./Ignorieren des Problems - Diese Zeile sollte an erster Stelle kein Problem verursachen. Es gibt ein tatsächliches Problem, wenn ExecJS ordnungsgemäß mit der JavaScript-Laufzeitumgebung in Ihrem System zusammenarbeitet. Wenn Sie diese Zeile entfernen, wird diese Tatsache einfach ignoriert.

2) Node.js installieren/weglaufen - Viele Leute scheinen am Ende nur Node.js zu installieren und verwenden diese anstelle der bereits auf ihrem System vorhandenen JavaScript-Laufzeit. Dies ist zwar eine gültige Option, erfordert jedoch jedoch zusätzliche Software und vermeidet nur das ursprüngliche Problem. Dies bedeutet, dass ExecJS nicht mit der auf Ihrem System bereits vorhandenen JavaScript-Laufzeitumgebung ordnungsgemäß funktioniert. Wenn die auf Ihrem System vorhandene JavaScript-Laufzeitumgebung funktionieren sollte, sollten Sie sie dazu bringen, mehr Software zu installieren, anstatt weitere Software zu installieren. Dem ExecJS-Ersteller zufolge wird die bereits in Windows integrierte Laufzeitumgebung tatsächlich unterstützt ...

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

ExecJS unterstützt diese Laufzeiten:

  • therubyracer - Google V8 ist 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 - Nutzen Sie die Kenntnisse der Optionen 1 und 2, um nach anderen Lösungen zu suchen. Ich kann Ihnen nicht sagen, wie viele Webseiten ich geschlossen habe, als ich die Optionen 1 oder 2 als akzeptierte Lösung sah, bevor ich tatsächlich Informationen über das Hauptproblem fand, das wir hatten. Der einzige Grund, aus dem wir uns umschauten, war, dass wir nicht glauben konnten, dass das Rails-Team (1) in jedes von einem Gerüst generierte Projekt, das ein Problem verursacht hat, eine Codezeile einfügt, oder (2) die Installation zusätzlicher Software erfordert, um diesen Standard auszuführen Codezeile. Und so sind wir schließlich zu einem Fix für unser Stammproblem gekommen (Ihre Meilen können variieren).

Der Fix, der für uns funktioniert hat: Suchen Sie auf dem System, in dem Probleme auftreten, die Datei runtimes.rb von ExecJS. Es sieht aus wie this . Erstellen Sie eine Kopie der gefundenen Datei zur Sicherung. Öffnen Sie das Original runtimes.rb zur Bearbeitung. Suchen Sie den Abschnitt, der mit der Zeile JScript = ExternalRuntime.new( beginnt. In diesem Abschnitt in der Zeile, die :command => "cscript //E:jscript //Nologo //U", enthält, entfernen Sie nur den //U. Dann in 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 lesen:

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 anschließend Ihren Rails-Server und starten Sie ihn neu. Aktualisieren Sie die Seite in Ihrem Browser, die den ursprünglichen Fehler verursacht hat. Hoffentlich lädt die Seite jetzt ohne Fehler. Hier ist der ExecJS-Themen-Thread, in dem wir unsere Ergebnisse ursprünglich veröffentlicht haben: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

Wenn das Problem dadurch nicht behoben wurde, können Sie die geänderte Datei runtimes.rb immer mit der Sicherungskopie überschreiben, die Sie (hoffentlich) erstellt haben, und alles wird wieder in Ordnung sein. In diesem Fall sollten Sie Option 3 in Betracht ziehen und weiter suchen. Lassen Sie uns wissen, was letztendlich für Sie funktioniert. Wenn Sie nicht das Require_Tree entfernen oder node.js installieren, läuft schon viel davon. :)

82
Kevin P

Wie die Kommentatoren sagten, vermisst man wahrscheinlich ein Juwel. Versuchen Sie, Folgendes zu Ihrem Gemfile hinzuzufügen:

gem 'therubyracer'

Und bundle install ausführen

4
agmcleod

Das Bearbeiten von runtimes.rb hat das Problem unter Win 8.1 behoben

2
user3122977

Ich habe mich anfangs für Lösung 3 von Kevin P entschieden und alles lief auf meinem Windows 8-Rechner einwandfrei.

Nach einem MS-Update letzte Nacht (19.08.13) konnte ich die Homepage in meiner Rails-App nicht einmal rendern.

Ich habe node.js installiert und es hat funktioniert, also verwende ich jetzt Lösung 2.

2
JanuskaE

Der schnellste Weg, das Problem zu lösen, ist die Installation der Node.js. Ruby würde es automatisch erkennen und es werden keine JS-Laufzeitfehler mehr auftreten

1
Hammad Siddiqui

Ich hatte das gleiche Problem, und Lösung 3 von Kevin P arbeitete für mich (Bearbeiten der Datei runtimes.rb).
Mein Setup zum Zeitpunkt der Anwendung der Lösung ist wie folgt:
Betriebssystem: Windows 8.1
Ruby-Version: 1.9.3p484
Rails-Version: 3.2.14

0
user1682341

Am schnellsten habe ich dieses Problem behoben:

gem 'therubyracer', '0.12.1'

bundle-Update 

bundle installieren

Ich hoffe das wird helfen. 

0
user3553117

runtimes.rb datei

 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
    )

Arbeiten in Windows 8.1

0
user2943905