2013-10-17 10 views
6

Ich verwende NVM, um meine Node.js-Versionen auf dem System zu verwalten, und seit ich es installiert habe, funktionieren meine Rails-Apps nicht mehr.rails execjs kann keinen Knoten finden, wenn NVM verwendet wird

ExecJS nicht Knoten Laufzeit zu finden, was den Fehler scheinen:

Node.js (V8) runtime is not available on this system (ExecJS::RuntimeUnavailable) 

, welche Maßnahmen erforderlich sind, NVM mit ExecJS spielen gut zu machen?

+2

Haben Sie versucht, 'nvm use [YOUR_VERSION]' auszuführen, bevor Sie Ihre Rails-Anwendung ausführen? – 19WAS85

+0

Wie ist Ihre Rails-Umgebung eingerichtet? Die von nvm verwendeten Pfade können auf dem Pfad fehlen, den der Passagier verwendet, wenn Sie Passagier verwenden. Siehe meine Antwort auf http://stackoverflow.com/questions/14187681/node-js-not-found-by-rails-execjs/24020042#24020042 es kann Ihnen helfen, das Problem zu diagnostizieren. –

+0

@WagnerAndrade danke! 'nvm use' arbeitete für mich. – dolzenko

Antwort

1

In unserem Fall sind wir Rails als „normaler“ Benutzer mit dem Befehl ausführen

bundle exec puma -C config/puma.rb 

Solange Sie einen „default“ node Satz durch nvm haben, sollten Sie in Ordnung sein.

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash 
nvm install v0.12.7 
nvm alias default v0.12.7 

Nächstes Mal, wenn Sie als dieser Benutzer anmelden, which node sollte den Pfad unter nvm zeigen:

~/.nvm/versions/node/v0.12.7/bin/node 

Ebenso Rails wird, dass node abholen als derjenige zu verwenden.

2

Gerade lief ich in dieses Problem. Grundsätzlich ist NVM gut, weil Sie damit mehrere verschiedene Versionen von Node auf einem Computer ohne Sudoprivilegien installieren und ausführen können. Da es mehrere Versionen gibt, wird nicht automatisch eine Version in Ihrer Shell geladen, sondern Sie müssen angeben, welche Version Sie verwenden möchten. nvm use default lädt die Standard-Node-Umgebung (anstelle des Standards können Sie eine bestimmte Version angeben) in die aktuelle Shell, aber dies wird nicht mehr funktionieren, wenn die Shell geschlossen wird. Um die Änderung dauerhaft zu machen, verwenden Sie nvm alias default node, überprüfen Sie this issue für weitere Informationen.

Verwandte Themen