197 votes

execJs: 'Impossible de trouver un runtime JavaScript' mais execjs AND therubyracer est dans Gemfile

J'obtiens cette erreur, comme beaucoup d'autres:

râteau abandonnée! Impossible de trouver un moteur d'exécution JavaScript. Voir https://github.com/sstephenson/execjs,

et ont déjà passé plus d'heures à chercher sur google, puis je l'admets. Je crois que c'est un execJs bug, mais que sais-je? À partir de tous les postes, c'est un problème très commun avec les rails 3.1. Un js runtime est maintenant nécessaire par ce qui sont maintenant la norme pierres précieuses comme le café-script et sass.

La plupart de ces cas ont été résolus en ajoutant les joyaux execjs " et "therubyracer" pour l'application Gemfile, puis en exécutant la liasse "mise à jour" et/ou "bundle install'. Mais pas pour moi.

Je suppose que j'ai eu de la chance. Je suis en cours d'exécution rails 3.1.3/ruby 1.9 sur une ancienne version de Redhat Linux (Ver 4 (2.6.9-101.ELsmp)). La gcc est 3.4.6.

D'autres ont signalé des correctifs de ne pas aider: je n'arrive pas à installer "nodejs", de "johnson", ou "mustang", les autres runtimes execJs est censé repérer et à utiliser. Ils ne vont pas le faire/l'installer sur mon système.

J'ai donc besoin de résoudre le problème à l'origine execJs de ne pas trouver de "therubyracer'. Quelqu'un a été dans cette voie? Voici le Gemfile (et bundle install dit Ok):

source 'http://rubygems.org'

gem 'rails', '3.1.3'
gem 'sqlite3'
gem 'sho-mongrel'

gem 'execjs'
gem 'therubyracer'
#gem "therubyracer", :require => 'v8'

group :assets do
  gem 'sass-rails',   '~> 3.1.5'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

Et voici une trace:

~/rails/316-private-pub/chatter-after>rake db:create --trace
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs/runtimes.rb:50:in `autodetect'
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:5:in `<module:ExecJS>'
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:4:in `<top (required)>'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
/home/vitalarthur/rails/316-private-pub/chatter-after/config/application.rb:7:in `<top (required)>'
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/home/vitalarthur/rails/316-private-pub/chatter-after/Rakefile:5:in `<top (required)>'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `block in load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `block in run'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/usr/local/bin/rake:19:in `load'
/usr/local/bin/rake:19:in `<main>'

Il n'y a rien d'intéressant dans le développement du journal.

Voici la execjs dir:

/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs>ls
disabled_runtime.rb  module.rb              ruby_rhino_runtime.rb  version.rb
external_runtime.rb  mustang_runtime.rb     runtimes.rb
johnson_runtime.rb   ruby_racer_runtime.rb  

J'ai aussi essayé de execjs-1.2.13. Même problème, je crois.

Si j'ai fait un commentaire execjs.rb ci-dessous, je peux courir râteau sans le message d'erreur:

require "execjs/module"
require "execjs/runtimes"

module ExecJS
  self.runtime #||= Runtimes.autodetect
end

Mais ensuite, je n'ai pas un moment de l'exécution, puis-je? Est execJs à l'exécution elle-même? Pas de.

Je peux voir où le texte de l'erreur provient de runtimes.rb:

def self.autodetect
  from_environment || best_available ||
    raise(RuntimeUnavailable, "Could not find a JavaScript runtime. " +
      "See https://github.com/sstephenson/execjs for a list of available runtimes.")
end

La question est donc, depuis que j'ai 'therubyracer' installé, pourquoi ne peut-runtimes.rb trouver? Est execJs cassé?

Ici, il 'therubyracer':

/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.9.9

Quelqu'un d'autre a eu ce problème avec execJs?

Merci, votre aide serait plus utile!

356voto

Paul Williams Points 1861

Les Utilisateurs D'Ubuntu:

J'ai eu le même problème et je l'ai résolu en installant nodejssur mon système indépendant de la gemme.

sur ubuntu: sudo apt-get install nodejs

Je suis sous ubuntu 11.10 64 bits

mise à jour: @Galina 's réponse ci-dessous je suppose que la dernière version de nodejs est nécessaire, donc @steve98177 votre meilleure option sur une redhat(ou CentOS) boîte est de l'installer à partir du code source @Galina a fait, mais que vous ne pouvez pas "faire/installer" sur cette boîte ?, Je suggère que vous essayez d'installer une fedora tr / min(plan) https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager ou trouver un autre HR/CentOs boîte(que vous pouvez "faire") et de créer votre propre rpm et installez-le sur original RH boîte(si ancienne bibliothèque glibc sur l'humidité relative joue de nice).

La vraie question ici(à mon humble avis) est de l'installation des pierres précieuses qui ont des dépendances sur les paquets installés à l'extérieur de l'environnement ruby, est-il un moyen de le savoir avant de l'installer ? une demande de renseignements pour des Gemmes ou des bundler ?


CentOS/RedHat Utilisateurs:

sudo yum install nodejs

109voto

Tiago Points 1110

Dans votre fichier gem, ajoutez:

 gem 'execjs'
gem 'therubyracer', :platforms => :ruby
 

Pour plus de détails: Rails 3.1 execjs et Impossible de trouver un runtime JavaScript

15voto

Abram Points 3501

C'est le lien dont j'avais besoin pour résoudre le problème (installer nodejs): https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

14voto

Santosh Points 6791

Lorsque vous créez un projet vide, cette ligne est commentée dans Gemfile. Décommentez-le et regroupez-le!

 gem 'therubyracer', :platforms => :ruby
 

5voto

Ramiz Raja Points 1558

J'ai eu des problèmes similaires sur Ubuntu 12.04. L'installation de Node.js a résolu le problème .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X