web-dev-qa-db-ja.com

execJs: 'JavaScriptランタイムが見つかりませんでした'しかしexecjsとtherubyracerはGemfileにあります

私はこのエラーを得ています:

熊手は中止されました! JavaScriptランタイムが見つかりませんでした。 https://github.com/sstephenson/execjs を参照してください。

私はすでにグーグルの検索にもっと時間をかけていますが、それから私は認めても構わないと思っています。これはexecJsのバグだと思います。

すべての投稿から、これはRails 3.1の非常に一般的な問題です。コーヒースクリプトやsassのような今や標準的な宝石であるjsランタイムが今必要とされています。

これらのケースのほとんどは、gem 'execjs'と 'therubyracer'をアプリのGemfileに追加してから、 'bundle update'や 'bundle install'を実行することで解決されました。私のためではない。

ラッキーだったと思います。古いバージョンのRedhat Linux 4(2.6.9-101.ELsmp)でRails 3.1.3/Ruby 1.9を実行していますが、gccは3.4.6です。

他の報告された修正は助けにはならない、私は 'nodejs'、 'johnson'、または 'mustang'をインストールすることができない、他のランタイムexecJsは見つけて使うことになっている。彼らは私のシステムにインストールしません。

ExecJが 'therubyracer'を見つけられないという問題を修正する必要があります。これがGemfileです(そしてバンドルインストールは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

そしてこれが痕跡です。

~/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>'

開発ログにはおもしろいことは何もありません。

これがexecjsディレクトリです。

/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  

Execjs-1.2.13も試しました。同じ問題です。

以下でexecjs.rbをコメントすると、エラーなしでrakeを実行することができます。

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

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

しかし、それから私はランタイムを取得しません。

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

問題は、「therubyracer」がインストールされているため、なぜruntimes.rbがそれを見つけられないのですか? execJは壊れていますか?

ここでそれは 'therubyracer'です。

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

どうすればこれを修正できますか?

187
steve98177

Ubuntuユーザー:

私は同じ問題を抱えていて、私は宝石とは無関係に私のシステムにnodejsをインストールすることによってそれを修正しました。

ubuntuでは:Sudo apt-get install nodejs

私は64bitのUbuntu 11.10を使っています

最新情報:以下の@Galinaの回答から、最新バージョンのnodejsが必要であると推測されるので、@ steve98177 redhat(またはCentOS)ボックスの最善の選択肢は、@Galinaと同じようにソースコードからインストールすることです。このボックスに "make/install"できませんか?、Fedora rpm(ロングショット)をインストールすることをお勧めします https://github.com/joyent/node/wiki/Installing-Node.js- via-package-manager または他のRH/CentOsボックスを見つけて(自分で作ることができます)独自のrpmを作成してオリジナルのRHボックスにインストールします(RH上の古いglibcがいい場合)。

ここで本当の問題(私見)は、Ruby環境の外でインストールされたパッケージに依存するGemをインストールすることです、インストールする前に知る方法はありますか?宝石やバンドラーのためのRFI?


CentOS/RedHatユーザー:

Sudo yum install nodejs
340
Paul Williams

あなたのgemfileに以下を追加してください:

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

詳細については、 ExecJSとJavaScriptランタイムが見つかりませんでした

104
Tiago

これは私が問題を解決するために必要なリンクです(nodejsのインストール): https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

15
Abram

空のプロジェクトを作成すると、この行はGemfileにコメントされます。コメントを外してバンドルするだけです。

gem 'therubyracer', :platforms => :Ruby
12
Santhosh

私はubuntu 12.04で同様の問題を抱えていました。 インストールNode.js それを修正しました。

5
Ramiz Raja

私はRuby 1.9.3p194、Rails 3.2.3、gem 1.8.24でUbuntu 11.10- 32 bitを使っています。 "script/Railsコンソール"の実行中に同じJavascriptエラーを受け取りました。

しかし、 "Sudo apt-get install nodejs"を実行することで私の問題は解決しました。

4
Vibin B. Nair

NodeJSをインストールしてもう一度やり直してください。

https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

4
Kent Aguilar

Fedoraユーザーは、深刻なネーミングとファイル配置の競合により、このパッケージがFedoraリポジトリからも利用できなくなるため、単純な "yum install nodejs"を実行できません。

動作するかもしれない代替ビルドで利用可能な少なくとも1つの代替リポジトリがあるようですが、私がそれを使用しても構わないのは2つの "代替"です - 私は別の代替を探しています。

4
Matt Heck

ステージングサーバーでも同じ問題が発生しました。ローカル開発マシンでrakeタスクを実行しても問題はありませんでしたが、ステージングサーバーへのデプロイは"JavaScriptランタイムが見つかりませんでした"エラーメッセージで失敗しましたassets: precompile rakeタスク。

もちろん、therubyracerおよびexecjsはGemfileにあり、最新バージョンを使用していました。 Gemfile.lockファイルが一致し、bundle showを実行してバージョンをさらに検証しました。

Googleで検索した後、私はすべてのgemを削除して再インストールするになり、これで問題が解決しました。根本的な原因が何であるかはまだわかりませんが、おそらくこれが役立つでしょう。

ところで、私の環境は次のようになります。

Ubuntu 10.04.3 LTS
rbenv
Ruby 1.9.2-p290
bundler-1.0.21
execjs-1.3.0
therubyracer-0.9.9
3
TheSpend

同じ問題がありました。 gem「execjs」と「therubyracer」を追加しても機能しません。 apt-get nodejsのインストール-動作しません。 64ビットUbuntu 10.04を使用しています。

しかし、それは次のことを助けてくれました:1.空のフォルダー(たとえば「Java」)を作成しました。 2.作成したフォルダー内のターミナルから、以下を実行します。

$ git clone git://github.com/ry/node.git
$ cd node
$ ./configure
$ make
$ Sudo make install

その後、(Ruby&Railsプロジェクトのフォルダーから)通常どおり「バンドルインストール」を実行します。そして、問題は解決されました。 Rubyは再インストールする必要がありませんでした。

3
Galina

Ubuntuを使用していた場合$ Sudo apt-get install nodejs

Windowsなどの別のシステムを開発に使用しないでください。世界中のほとんどすべてのサーバーがLinuxサーバーであると考えてください。そのため、そのアプリケーションを展開しようとすると、LinuxまたはUnix環境でも開発した方が簡単です。

私はこのエラーで何度か髪を引っ張りました。 Apache/Nginxを再起動することで、いつかは消えてしまいました。

そこで、GEMファイルに以下を追加して、上記と同じ方法で修正しました。

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

そして、gemfile.lockファイルを削除し、「バンドルインストール」を再実行しました。 「バンドルインストール」が正しいライブラリなどを実際にインストールしたのはその後だけでした。

2
LorneCurrie

私は自分のWindowsマシンでこれを経験しましたが、問題はまったく異なっていたことがわかりました。 %PATH%変数から誤っていくつかのパスを削除してしまった。コマンドプロンプトを再起動するだけで解決しました。これらの欠落しているパスの1つにJSランタイムがあったようです。

2
Godwin

Rails gコントローラを生成すると、同じエラーが発生しました。その後、Gemfile(Rails 4)で次の変更を行うと、すべてがスムーズになりました。私が行った変更は

gem 'execjs'
gem「therubyracer」、「0.11.4」
その後、サーバーを実行し、アプリケーションですべての基本操作を実行できます。

1
Madhan Ayyasamy

Ubuntuでは、Sudo apt-get updateする必要があり、その後nodejsのインストールが機能しました。

1
kilombo1

私の場合、bundleコマンドを実行するとうまくいきました。彼らがお互いを見つけると信じています。

0
javabeangrinder

RubyMine(6.3.3)を使用しているときにこの問題が発生しました。ある日、コードを実行しようとしましたが、機能せず、JavaScriptランタイムが見つからないという苦情がありました。 Rails sを実行できました。私にとっての修正は、新しい実行構成を作成することでした。実行構成が破損するのは本当に奇妙に思えます。

0
Jack

作成したフォルダーにあるgemfileに追加します:gem 'execjs' gem 'therubyracer'

0
Vishnu Harish