web-dev-qa-db-fra.com

ExecJS et impossible de trouver un runtime JavaScript

J'essaie d'utiliser le modèle Mongoid/Devise Rails 3.1) (Mongoid et Devise), et je continue à avoir une erreur indiquant ExecJS ne peut pas trouver un Runtime JavaScript. Assez bien quand je n'en ai pas installé, mais j'ai essayé d'installer Node.js , Mustang et le Ruby Racer , mais rien travaille.

Je n'ai pas trouvé de runtime JavaScript. Voir sstephenson/ExecJS (GitHub) pour une liste des environnements d'exécution disponibles (ExecJS::RuntimeUnavailable).

Que dois-je faire pour que cela fonctionne?

399
srboisvert

Utilisateurs Ubuntu

Je suis sur Ubuntu 11.04 et avait des problèmes similaires. Installation de Node.js résolu le problème.

À partir de Ubuntu 13.04 x64, vous devez uniquement exécuter:

Sudo apt-get install nodejs

Cela résoudra le problème.


Utilisateurs CentOS/RedHat

Sudo yum install nodejs
423
eldewall

Ajoutez simplement ExecJS et le Ruby Racer dans votre fichier gem et exécutez bundle install après.

gem 'execjs'

gem 'therubyracer'

Tout devrait bien se passer après.

446
vincent jacquel

Dans votre fichier Gem, écrivez

gem 'execjs'
gem 'therubyracer'

puis courir

bundle install

Tout fonctionne bien pour moi :)

77
manish nautiyal

J'ai eu un problème similaire: mon application Rails 3.1 fonctionnait correctement sous Windows, mais présentait la même erreur que l'OP lorsqu'elle fonctionnait sous Linux. La solution qui a fonctionné pour moi sur les deux plates-formes a été d'ajouter ce qui suit à mon Gemfile:

gem 'therubyracer', :platforms => :Ruby

Le truc, c'est de savoir que :platforms => :Ruby signifie en réalité que vous utiliserez ce joyau avec "C Ruby (IRM) ou Rubinius, mais PAS Windows."

D'autres valeurs possibles pour :platforms sont décrites dans la page de manuel bundler .

FYI: Windows a un moteur JavaScript intégré que execjs peut localiser. Sous Linux, il n’existe pas de fonction intégrée, bien qu’il en existe plusieurs qu’il est possible d’installer. therubyracer est l'un d'entre eux. D'autres sont répertoriés dans la execjsREADME.md .

48
jwfearn

L'ajout de la gemme suivante à mon Gemfile a résolu le problème:

gem 'therubyracer'

Ensuite, regroupez vos nouvelles dépendances:

$ bundle install
36
JDutil

Une autre solution consiste à regrouper sans le groupe de gemmes contenant les éléments que vous n’avez pas.

Alors faites:

bundle install --without assets

vous n'avez pas du tout besoin de modifier le fichier Gemfile, à condition bien sûr que vous ne fassiez pas des tâches liées à la chaîne d'actifs, ce qui est généralement le cas dans les environnements autres que ceux de développement. Bundle se souviendra de votre paramètre '--without' dans le fichier .bundle/config.

16
moschops

Ajouter les gemmes suivantes dans votre fichier gem

gem 'therubyracer'
gem 'execjs'

et courir

bundle install

vous avez terminé :)

6
Ramiz Raja

Pour Amazon Linux (AMI):

Sudo yum install nodejs npm --enablerepo=epel
5
William Hu

J'ai eu la même erreur, mais uniquement sur mon serveur de transfert, pas dans mon environnement de production. nodejs était déjà installé sur les deux environnements.

En tappant:

which node

J'ai découvert que la commande de noeud se trouvait dans:/usr/bin/node en production mais:/usr/local/bin/node dans le transfert.

Après avoir créé un lien symbolique sur le transfert, c'est-à-dire:

Sudo ln -s /usr/local/bin/node /usr/bin/node

l'application a ensuite travaillé dans la mise en scène.

Pas de muss pas de chichi.

4
Sean

J'avais l'habitude d'ajouter le Ruby Racer au fichier Gem pour le réparer. Mais bon, Node.js fonctionne!

4
Richard Zhang

N'utilisez pas RubyRacer car c'est mauvais pour la mémoire. Installer Node.js comme suggéré par certaines personnes ici est une meilleure idée.

Cette liste des environnements d'exécution disponibles pouvant être utilisés par la bibliothèque ExecJs documente également l'utilisation de Node.js.

https://github.com/sstephenson/execjs

Donc, Node.js n’est pas une overkill et une bien meilleure solution que d’utiliser RubyRacer.

3
Nerve

Pour votre information, cela a résolu le problème pour moi ... c'est un problème qui pose problème: http://forums.freebsd.org/showthread.php?t=35539

2
MichelV69

Tentative de débogage dans RubyMine avec Ubuntu 18.04, Ruby 2.6. *, Rails 5, et RubyMine 2019.1.1, je me suis heurté au même problème.

Pour résoudre le problème, j'ai supprimé la ligne mini_racer de mon Gemfile, puis j'ai exécuté bundle:

# See https://github.com/Rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :Ruby

Changer en:

# See https://github.com/Rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :Ruby
0
CommandZ

J'ai commencé à avoir ce problème quand j'ai commencé à utiliser rbenv avec Ruby 1.9.3 alors que mon système Ruby vaut 1.8.7. La gemme est installée aux deux endroits, mais pour une raison quelconque, le script Rails ne l'a pas détectée. Mais ajouter les "execjs" et "therubyracer" au Gemfile a fait l'affaire.

0
arangamani

Dans votre fichier GEM, commentez cette ligne.

19 # gem 'therubyracer', plateformes:: Ruby

Et lancez l'installation en bundle

Vous êtes prêt à travailler. :)

0