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?
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.
Sudo yum install nodejs
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.
Dans votre fichier Gem, écrivez
gem 'execjs'
gem 'therubyracer'
puis courir
bundle install
Tout fonctionne bien pour moi :)
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 execjs
README.md .
L'ajout de la gemme suivante à mon Gemfile a résolu le problème:
gem 'therubyracer'
Ensuite, regroupez vos nouvelles dépendances:
$ bundle install
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.
Ajouter les gemmes suivantes dans votre fichier gem
gem 'therubyracer'
gem 'execjs'
et courir
bundle install
vous avez terminé :)
Pour Amazon Linux (AMI):
Sudo yum install nodejs npm --enablerepo=epel
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.
J'avais l'habitude d'ajouter le Ruby Racer au fichier Gem pour le réparer. Mais bon, Node.js fonctionne!
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.
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
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
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.
Dans votre fichier GEM, commentez cette ligne.
19 # gem 'therubyracer', plateformes:: Ruby
Et lancez l'installation en bundle
Vous êtes prêt à travailler. :)