Rails - Konnte keine JavaScript-Laufzeit finden?

247

Ich habe ein neues Rails-Projekt rails 3.1.0.rc4auf meinem lokalen Computer erstellt, aber wenn ich versuche, den Server zu starten, wird Folgendes angezeigt: Es konnte keine JavaScript-Laufzeit gefunden werden. Siehe hier für eine Liste der verfügbaren Laufzeiten. ( ExecJS::RuntimeUnavailable)

Hinweis: Hier geht es nicht um Heroku.

Michael Durrant
quelle
1
Mögliches Duplikat von ExecJS und konnte keine JavaScript-Laufzeit finden
Lucio

Antworten:

475

Die Installation einer Javascript-Laufzeitbibliothek wie nodejs löst dieses Problem

Um nodejs auf ubuntu zu installieren, können Sie den folgenden Befehl in das Terminal eingeben:

sudo apt-get install nodejs

Geben Sie Folgendes in das Terminal ein, um nodejs auf Systemen mit yum zu installieren:

yum -y install nodejs
theTuxRacer
quelle
14
für mich auch. sudo apt-get install nodejs.
Hertzel Guinness
1
Ich empfehle dies jetzt als Route. Siehe oben.
Michael Durrant
1
Hinweis in der Antwort über die Installation des Knotens über das Ubuntu-Software-Center entfernt, da er nicht vorhanden war (Ubuntu 12.04)
Michael Durrant
1
Ubuntu 64 bereitet große Probleme bei der Installation des Theryracers. Nicht einmal die letzte Version 0.11.1 hat dies behoben. Diese Antwort hat mir dabei geholfen.
Eduardo
@gwho Es gibt eine Antwort von Yang. Schau dir das an.
TheTuxRacer
44

Anmerkung von Michael 28.12.2011 - Ich habe meine Akzeptanz von diesem (Rubytheracer) auf oben (NodeJS) geändert, da der Subrayracer Probleme mit der Codegröße hat. Heroku rät jetzt stark davon ab . Es wird "funktionieren", kann aber Größen- / Leistungsprobleme haben.

Wenn Sie Ihrer Gemfile eine Laufzeit hinzufügen, z. B. therubyracer, und das Bundle ausführen, versuchen Sie, den Server zu starten, der funktionieren soll.

gem 'therubyracer'

Zum Kompilieren von Coffeescript und auch für Uglifier ist eine Javascript-Laufzeit erforderlich.

Update, 12.12.2011: Einige Leute haben Probleme mit Rubytheracer gefunden (ich denke, es war hauptsächlich Codegröße). Sie fanden, dass execjs (oder nodejs) genauso gut funktionierten (wenn nicht besser) und viel kleiner waren.

nb Coffeescript wurde zum Standard für 3.1+

Gazler
quelle
3
Es wird auch zum Komprimieren von JavaScript mit UglifyJS verwendet. Beachten Sie, dass die empfohlene Methode zum Ausführen dieser Aufgaben darin besteht, sie in der Entwicklung mit rake assets:precompileIhrem Repository auszuführen und anschließend Assets hinzuzufügen. Rails 3.1 benötigt zum Zeitpunkt der Veröffentlichung keine JavaScript-Laufzeit in der Produktion.
Whitequark
1
Ich habe dies als Antwort markiert. Es war ein bisschen haarig, da dies nicht sofort behoben wurde und ich auch neue Apps mit 3.0.9 und 3.0.4 ausprobierte, aber (andere) Fehler mit ihnen bekam. Endlich habe ich wieder eine neue App gemacht - und auch Rails RC5 damit bekommen und den Rubytheracer hinzugefügt und ein Bunlde-Update gemacht und endlich kann ich den Server zum Laufen bringen. Danke Gazier!
Michael Durrant
1
Übrigens: Die Standard-Rails-App, die erstellt wird, verwendet uglifier, was meiner Meinung nach auch dies erfordert.
Michael Durrant
1
Ich denke, eine gute Praxis könnte es in die Gemfile unter der Entwicklungsgruppe setzen, so etwas wie group :development do gem 'therubyracer' end
Evaevans
@eveevans Die Laufzeit kann nicht gefunden werden. Das Asset wird in der Produktionsumgebung kompiliert, sodass sich der Subrayracer unter dem Produktionsumgebungsblock befinden muss.
Lulalala
27

Fügen Sie Ihrer Edelsteindatei folgende Edelsteine ​​hinzu

gem 'therubyracer'
gem 'execjs'

und Renn

bundle install

ODER

Installieren Sie Node.js , um es für alle Projekte dauerhaft zu beheben.

Ramiz Raja
quelle
1
Das hat bei mir funktioniert (Linux Mint 16), ich denke, dass in der neuesten Version von Rails entweder einige der Abhängigkeiten fehlen.
geminiCoder
15

sudo apt-get install nodejsfunktioniert bei mir nicht Damit es funktioniert, muss ich Folgendes tun:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Hoffe, das hilft jemandem, der das gleiche Problem wie ich hat.

Flugschnee
quelle
Ich arbeite nicht für das Add-Apt-Repository ppa: chris-lea / node.js
jpganz18
@ jpganz18 versuchen Sie dies zuerst: sudo apt-get install software-properties-common Wenn dies das Problem nicht löst, können Sie es manuell installieren: blog.anantshri.info/howto-add-ppa-in-debian
Robin
6

Auf der Windows-Plattform bin ich auch auf dieses Problem gestoßen. Die Lösung für mich ist einfach hinzufügen

C:\Windows\System32

zum Pfad

und starten Sie den Computer neu.

Yang
quelle
3

Ich hatte dieses Problem auf einem Windows-Computer und die Installation von node.js war die Lösung, die schließlich für mich funktioniert hat. Dies geschah, nachdem mehrere andere Routen ausprobiert wurden, einschließlich des Versuchs, "Therubyracer" zum Laufen zu bringen. Obwohl der Github für node.js darauf hinweist, dass die Installation unter Windows immer noch instabil ist, hatte die Website unter http://nodejs.org/ ein Windows-Installationsprogramm, das perfekt funktionierte.

Edub Kendo
quelle
1

Wenn Sie beispielsweise nodejs bereits von der Quelle installieren und execjs es nicht erkennt, sollten Sie diesen Tipp ausprobieren: https://coderwall.com/p/hyjdlw

SnirD
quelle
1

Wenn alles fehlschlägt, können Sie es versuchen

# aptitude install nodejs

als Wurzel. Sie können Ihre Installation mit dem folgenden Befehl testen:

# Knoten -v

Wenn Sie NPM installieren möchten, lesen Sie bitte den folgenden Link . Ich hoffe es hilft.

user3576216
quelle
0

Unter CentOS 6.5 hat Folgendes für mich funktioniert:

sudo yum install -y nodejs
Bob Stine
quelle
0

Installieren Sie eine Javascript-Laufzeit

Der Fehler wird durch das Fehlen einer Javascript-Laufzeit auf Ihrem lokalen Computer verursacht. Um dies zu beheben, müssen Sie NodeJS installieren.

Sie können NodeJS über den Node Version Manager oder nvm installieren :

Installieren Sie zunächst nvm:

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

Installieren Sie den Knoten über nvm:

nvm install 5.9.1

Dadurch wird die Version 5.9.1von Node installiert .

Gnerkus
quelle
0

Ich bin mit Phusion Passenger (als Nginx-Modul ausgeführt) auf einem Redhat-Server auf dieses Problem gestoßen. Wir hatten bereits eine Javascript-Laufzeit installiert. Andere Rails-Apps im selben übergeordneten Verzeichnis funktionierten einwandfrei.

Es stellte sich heraus, dass wir ein Berechtigungsproblem hatten. Führen Sie "ls -l" aus und prüfen Sie, ob der Ordner denselben Eigentümer und dieselbe Gruppe wie andere funktionierende Apps auf dem System hat. Ich musste chown und chgrp für den Ordner (mit dem rekursiven Schalter) ausführen, um das Problem zu beheben.

Patrick
quelle
0

Ich hoffe, Sie haben nodejs || vorinstalliert nmv.

Meine Lösung erfordert keinsudo apt Gem- Setup oder die Installation von 'node with ", wenn Sie bereits über nvm verfügen.

Sie müssen lediglich DesctopEntry von RubyMine bearbeiten. dafür werden wir diese kleinen Schritte haben:

  1. Gehe zu usr/share/applications
  2. Öffnen Sie in einem beliebigen Editor (ich benutze vim) Rubymine DesktopEntryvim RubyMine
  3. Bearbeiten Sie Zeile 6 (beginnt mit Exec). Sie sollten zum Anfang hinzufügen /bin/bash -i -c. Ihre Linie sollte also so aussehen Exec=/bin/bash -i -c "/home/USERNAME/rubymine/RubyMine-2019.1.2/bin/rubymine.sh" %f
  4. Getan! Du bist herrlich!

Als Vorteil sind jetzt alle Ihre Umgebungsvariablen für RubyMine verfügbar. Sie haben also keine Schmerzen, wenn Sie sie hinzufügen.

Ivan Kevich
quelle