Ich versuche, die Vorlage Mongoid / Devise Rails 3.1 ( Mongoid und Devise ) zu verwenden, und es wird immer wieder die Fehlermeldung angezeigt, dass ExecJS keine JavaScript-Laufzeit finden kann. Fair genug, wenn ich keine installiert hatte, aber ich habe versucht, Node.js , Mustang und den Ruby Racer zu installieren , aber nichts funktioniert.
Ich konnte keine JavaScript-Laufzeit finden. Eine Liste der verfügbaren Laufzeiten ( ) finden Sie unter sstephenson / ExecJS (GitHub ExecJS::RuntimeUnavailable
).
Was muss ich tun, damit das funktioniert?
ruby-on-rails-3.1
execjs
javascript
srboisvert
quelle
quelle
Antworten:
Ubuntu-Benutzer
Ich bin auf Ubuntu 11.04 und hatte ähnliche Probleme. Die Installation von Node.js hat das Problem behoben.
Ab Ubuntu 13.04 x64 müssen Sie nur noch Folgendes ausführen:
Dies wird das Problem lösen.
CentOS / RedHat-Benutzer
quelle
Fügen Sie einfach ExecJS und den Ruby Racer in Ihre Gem- Datei ein und führen Sie sie
bundle install
aus.Danach sollte alles in Ordnung sein.
quelle
gem 'therubyracer'
Schreiben Sie in Ihre Gem-Datei
und dann laufen
Alles funktioniert gut für mich :)
quelle
Ich hatte ein ähnliches Problem: Meine Rails 3.1-App funktionierte unter Windows einwandfrei, erhielt jedoch unter Linux den gleichen Fehler wie das OP. Das Update, das für mich auf beiden Plattformen funktioniert hat, bestand darin, Folgendes zu meinem hinzuzufügen
Gemfile
:Der Trick ist zu wissen, dass das
:platforms => :ruby
tatsächlich bedeutet , dieses Juwel nur mit "C Ruby (MRI) oder Rubinius, aber NICHT mit Windows" zu verwenden.Weitere mögliche Werte für
:platforms
sind in derbundler
Manpage beschrieben .Zu Ihrer Information: Windows verfügt über eine integrierte JavaScript-Engine, die gefunden werden
execjs
kann. Unter Linux gibt es kein eingebautes System, obwohl mehrere verfügbar sind, die installiert werden können.therubyracer
Ist einer von ihnen. Andere sind in derexecjs
README.md aufgeführt .quelle
Das Hinzufügen des folgenden Edelsteins zu meiner Gemfile hat das Problem behoben:
Dann bündeln Sie Ihre neuen Abhängigkeiten:
quelle
Eine alternative Möglichkeit besteht darin, einfach ohne die Edelsteingruppe zu bündeln, die die Dinge enthält, die Sie nicht haben.
Dann mach's:
Sie müssen das Gemfile überhaupt nicht ändern, vorausgesetzt natürlich, Sie erledigen keine Asset-Chain-Aufgaben - was normalerweise in Umgebungen ohne Entwicklung gilt. Bundle speichert Ihre Einstellung "--without" in der .bundle / config-Datei.
quelle
Fügen Sie Ihrer Edelsteindatei folgende Edelsteine hinzu
und Renn
du bist fertig :)
quelle
Für Amazon Linux (AMI):
quelle
Ich habe den Ruby Racer zur Gem-Datei hinzugefügt, um das Problem zu beheben. Aber hey, Node.js funktioniert!
quelle
Ich hatte denselben Fehler, aber nur auf meinem Staging-Server, nicht in meiner Produktionsumgebung. nodejs wurde bereits in beiden Umgebungen installiert.
Durch Eingabe von:
Ich fand heraus, dass sich der Knotenbefehl in: / usr / bin / node in der Produktion befand, aber: / usr / local / bin / node in Staging.
Nach dem Erstellen eines Symlinks beim Staging, dh:
Die Anwendung arbeitete dann in der Inszenierung.
Kein Muss, keine Aufregung.
quelle
nodejs
auchVerwenden Sie RubyRacer nicht, da der Speicher schlecht ist. Die Installation von Node.js, wie von einigen Leuten hier vorgeschlagen, ist eine bessere Idee.
Diese Liste der verfügbaren Laufzeiten, die von der ExecJs-Bibliothek verwendet werden können, dokumentiert auch die Verwendung von Node.js.
https://github.com/sstephenson/execjs
Node.js ist also kein Overkill und eine viel bessere Lösung als die Verwendung des RubyRacer.
quelle
Zu Ihrer Information, dies hat das Problem für mich behoben ... es ist ein Pfadproblem: http://forums.freebsd.org/showthread.php?t=35539
quelle
Ich bekam dieses Problem, als ich anfing, rbenv mit Ruby 1.9.3 zu verwenden, wobei mein System Ruby 1.8.7 ist. Das Juwel ist an beiden Stellen installiert, aber aus irgendeinem Grund hat das Rails-Skript es nicht aufgenommen. Aber das Hinzufügen der "execjs" und "therubyracer" zur Gemfile hat den Trick getan.
quelle
Kommentieren Sie diese Zeile in Ihrer Edelsteindatei aus.
19 # gem 'therubyracer', Plattformen :: rubin
Führen Sie die Bundle-Installation aus
Sie sind bereit zu arbeiten. :) :)
quelle
Versuch, in RubyMine mit Ubuntu 18.04, Ruby 2.6. *, Rails 5 und RubyMine 2019.1.1 zu debuggen , stieß ich auf dasselbe Problem.
Um das Problem zu beheben, habe ich die
mini_racer
Zeile aus meiner entferntGemfile
und dann ausgeführtbundle
:Ändern:
quelle
Ich habe
node
über nvm installiert und bin bei der Bereitstellung mit Capistrano auf dieses Problem gestoßen. Capistrano hat nvm nicht automatisch geladen, da es nicht interaktiv ausgeführt wird.Um dies zu beheben, verschieben Sie einfach die Zeilen, die nvm zu Ihrem hinzugefügt hat
~/.bashrc
, nach oben. Die Datei sieht dann ungefähr so aus:quelle