Rails - Impossible de trouver un runtime JavaScript?

247

J'ai créé un nouveau projet Rails en utilisant rails 3.1.0.rc4sur ma machine locale mais quand j'essaye de démarrer le serveur j'obtiens: Impossible de trouver un runtime JavaScript. Voir ici pour une liste des temps d'exécution disponibles. ( ExecJS::RuntimeUnavailable)

Remarque: il ne s'agit pas d'Heroku.

Michael Durrant
la source

Réponses:

475

L'installation d'une bibliothèque d'exécution javascript telle que nodejs résout ce problème

Pour installer nodejs sur ubuntu, vous pouvez taper la commande suivante dans le terminal:

sudo apt-get install nodejs

Pour installer nodejs sur des systèmes utilisant yum, tapez ce qui suit dans le terminal:

yum -y install nodejs
theTuxRacer
la source
14
pour moi aussi. sudo apt-get install nodejs.
Hertzel Guinness
1
Je recommande maintenant cela comme route à suivre. Voir au dessus.
Michael Durrant
1
suppression de la note dans la réponse sur l'installation du nœud via le centre de logiciels Ubuntu car il n'y était pas (Ubuntu 12.04)
Michael Durrant
1
Ubuntu 64 donne un énorme problème pour installer therubyracer, pas même la dernière version, 0.11.1, n'a résolu cela. Cette réponse m'a aidé à ce sujet.
Eduardo
@gwho Il y a une réponse ci-dessous par Yang. Jetez un oeil à cela.
theTuxRacer
44

Note de Michael 28/12/2011 - J'ai changé mon acceptation de ceci (rubytheracer) à ci-dessus (nodejs) car therubyracer a des problèmes de taille de code. Heroku le décourage désormais fortement . Cela «fonctionnera» mais peut avoir des problèmes de taille / performances.

Si vous ajoutez un runtime, tel que therubyracer à votre Gemfile et exécutez le bundle, essayez de démarrer le serveur qui devrait fonctionner.

gem 'therubyracer'

Un runtime javascript est requis pour la compilation de coffeescript et aussi pour uglifier.

Mise à jour, 12/12/2011: Certaines personnes ont trouvé des problèmes avec rubytheracer (je pense que c'était principalement la taille du code). Ils ont trouvé que les execjs (ou nodejs) fonctionnaient tout aussi bien (sinon mieux) et étaient beaucoup plus petits.

nb Coffeescript est devenu une norme pour 3.1+

Gazler
la source
3
Il est également utilisé pour compresser JavaScript avec UglifyJS. Notez que la méthode recommandée pour effectuer ces tâches est de les effectuer en développement avec rake assets:precompile, puis d'ajouter des actifs à votre référentiel; Rails 3.1 ne nécessitera pas réellement un runtime JavaScript en production au moment de la sortie.
whitequark
1
J'ai marqué cela comme la réponse. C'était un peu poilu car cela ne l'a pas corrigé tout de suite et j'essayais également de nouvelles applications avec 3.0.9 et 3.0.4 mais j'ai eu des erreurs (différentes) avec elles. Enfin, j'ai de nouveau fait une nouvelle application - et j'ai également obtenu des rails rc5 avec elle et ajouté le rubytheracer et fait une mise à jour bunlde et enfin je peux obtenir le serveur opérationnel. Merci Gazier!
Michael Durrant
1
btw L'application de rails standard qui est créée utilise uglifier, ce qui nécessite également cela, je crois.
Michael Durrant
1
Je pense qu'une bonne pratique pourrait être mise dans le gemfile sous le groupe de développement, quelque chose comme group :development do gem 'therubyracer' end
eveevans
@eveevans le runtime est introuvable erreur. L'actif est compilé dans l'environnement de production, de sorte que le therubyracer doit être sous le bloc env de production.
lulalala
27

Ajoutez les gemmes suivantes dans votre fichier de gemmes

gem 'therubyracer'
gem 'execjs'

et courir

bundle install

OU

Installez Node.js pour le réparer définitivement pour tous les projets.

Ramiz Raja
la source
1
Cela a fonctionné pour moi (Linux Mint 16), je pense que dans la dernière version de rails, certaines des dépendances manquent.
geminiCoder
15

sudo apt-get install nodejsne fonctionne pas pour moi. Pour le faire fonctionner, je dois faire ce qui suit:

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

J'espère que cela aidera quelqu'un ayant le même problème que moi.

flyingsnow
la source
ne travaille pas pour moi l'add-apt-repository ppa: chris-lea / node.js
jpganz18
@ jpganz18 essayez ceci en premier: sudo apt-get install software-properties-common Si cela ne résout pas le problème, vous pouvez l'installer manuellement: blog.anantshri.info/howto-add-ppa-in-debian
Robin
6

Sur la plate-forme Windows, j'ai également rencontré ce problème La solution pour moi est simplement d'ajouter

C:\Windows\System32

au CHEMIN

et redémarrez l'ordinateur.

Yang
la source
3

J'ai eu ce problème sur une machine Windows et l'installation de node.js était la solution qui a finalement fonctionné pour moi. Cela est venu après avoir essayé plusieurs autres voies, y compris essayer de faire fonctionner le 'therubyracer'. Bien que le github pour node.js suggère que l'installation sur Windows est toujours instable, le site Web à http://nodejs.org/ avait un installateur Windows qui fonctionnait parfaitement.

Edub Kendo
la source
1

Si tout échoue, vous pouvez essayer

# aptitude install nodejs

en tant que root. Vous pouvez tester votre installation avec la commande suivante:

# node -v

Si vous souhaitez installer NPM, veuillez vous référer au lien suivant . J'espère que ça aide.

user3576216
la source
0

Sur CentOS 6.5, les éléments suivants ont fonctionné pour moi:

sudo yum install -y nodejs
Bob Stine
la source
0

Installer un runtime Javascript

L'erreur est due à l'absence d'un runtime Javascript sur votre machine locale. Pour résoudre ce problème, vous devrez installer NodeJS.

Vous pouvez installer NodeJS via le Node Version Manager ou nvm :

Tout d'abord, installez nvm:

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

Installez Node via nvm:

nvm install 5.9.1

Cela installera la version 5.9.1de Node.

gnerkus
la source
0

J'ai rencontré ce problème en utilisant Phusion Passenger (fonctionnant en tant que module nginx) sur un serveur Redhat. Nous avions déjà installé un runtime Javascript. Les autres applications Rails dans le même répertoire parent ont bien fonctionné.

Il s'est avéré que nous avions un problème d'autorisations. Exécutez "ls -l" et voyez si le dossier a le même propriétaire et le même groupe que les autres applications de travail sur le système. J'ai dû exécuter chown et chgrp sur le dossier (avec le commutateur récursif) pour le corriger.

Patrick
la source
0

J'espère que vous avez des nodejs préinstallés || nmv.

Ma solution ne nécessite pas de configuration gem ou d'installation de 'node with sudo apt" lorsque vous avez déjà nvm.

Tout ce dont vous avez besoin est d'éditer DesctopEntry of RubyMine. pour cela nous aurons ces petits pas:

  1. Aller à usr/share/applications
  2. Ouvrir dans n'importe quel éditeur (j'utilise vim) Rubymine DesktopEntryvim RubyMine
  3. Modifiez la ligne 6 (commence par Exec). Vous devez ajouter au début /bin/bash -i -c. Votre ligne devrait donc ressembler à ceci Exec=/bin/bash -i -c "/home/USERNAME/rubymine/RubyMine-2019.1.2/bin/rubymine.sh" %f
  4. Terminé! Tu es glorieux!

Comme avantage, toutes vos variables d'environnement sont désormais disponibles pour RubyMine. Vous ne ressentez donc aucune douleur en les ajoutant.

Ivan Kevich
la source