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


191

私はこのエラーを受け取ります:

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

私はすでにグーグルを検索するのにより多くの時間を費やしてきました、そして私は認めたいと思っています。これはexecJのバグだと思います。

すべての投稿から、これはRails 3.1で非常に一般的な問題です。jsランタイムは、今やcoffee-scriptやsassのような標準的なgemで必要とされています。

これらのケースのほとんどは、「execjs」と「therubyracer」というgemをアプリのGemfileに追加してから、「バンドル更新」または「バンドルインストール」を実行することで解決されました。私のためではない。

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

他の報告された修正は役に立たず、「nodejs」、「johnson」、または「mustang」をインストールできません。他のランタイムexecJが検索して使用することになっています。彼らは私のシステムに作成/インストールしません。

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は壊れていますか?

ここでは「テルビラッカー」:

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

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

回答:


346

Ubuntuユーザー:

同じ問題がありnodejs、gemとは独立してシステムにインストールすることで修正しました。

ubuntuでは: sudo apt-get install nodejs

64ビットUbuntu 11.10を使用しています

更新:以下の@Galinaの回答から、nodejsの最新バージョンが必要であることを推測しているので、@ steve98177 redhat(またはCentOS)ボックスでの最良のオプションは、@ Galinaと同じようにソースコードからインストールすることですが、このボックスに「make / install」することはできませんか?、fedora rpm(ロングショット)をインストールすることをお勧めしますhttps://github.com/joyent/node/wiki/Installing-Node.js-via-package-マネージャー または別のRH / CentOsボックス(「作成」できる)を見つけて、独自のrpmを作成し、元のRHボックスにインストールします(RH上の古いglibcが適切に動作する場合)。

ここでの実際の問題(IMHO)は、Ruby環境外でインストールされたパッケージに依存するGemsをインストールすることです。インストールする前に知る方法はありますか?GemsまたはbundlerのRFI?


CentOS / RedHatユーザー:

sudo yum install nodejs

1
ubuntuでは、sudo apt-get updateを実行する必要があり、その後nodejsインストールが機能しました。
Vineet Bhatia

私のUbuntu 12.04- 32ビットでも、Ruby 1.9.3p392、rails 3.2.3、gem 1.8.25で同じ問題が発生しました。「script / rails console」および「script / rails server」の実行中に同じエラーを受け取りました。sudo apt-get install nodejs私の問題を解決しました。
ajin6747 2013年

それはノードである必要がありますか?therubyracer、therubyrhino、Apple JavaScriptCoreなどを使用できると思います。ExecJSがそれらをサポートしていることを知っています。github.com/sstephenson/execjs
ダスティングリフィス

execjsでサポートされている代替ランタイムをgemでインストールしようとしても、どこにも行きませんでした。実際、nodejsのインストールは機能しました。理想とは程遠いが、それはあなたをポストを乗り越えさせる。
ミッチ・ケント

私はubuntu 14.04を使用しています。nodejsのインストール後に解決された問題。
Charles Wu

108

gemfileに次を追加します。

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

詳細: ExecJSとJavaScriptランタイムが見つかりませんでした


1
おかげで、それは動作しません。execjsによってrubyrhinoを認識させるためのこの試みを見てください。gemwhich rhino /usr/local/lib/ruby/gems/1.9.1/gems/therubyrhino-1.73.1/lib/rhino.rb
steve98177

私もうまくいきました。私のようなRails初心者向けのメモ:Gemfileはプロジェクトフォルダにあります。
McSas 2012

1
これがうまくいかなかったあなたのために:gem install therubyracer最初に走ってみてください。
maksimov

この問題を抱えている他の人には、ShopifyのダッシュプロジェクトをCentOS 5.8システムにインストールしていて、execjsランタイムの問題が発生していました。これを自分に追加したところ、Gemfileうまくいきました。
ケーシー

うまくいきました。しかし、なぜそれをしなければならないのですか?Gemfileに行を追加するたびに、個人プロジェクトやチームプロジェクトでは本当に意味のあることになるはずです。これは、問題が環境固有である一方で、他のマシンに影響を与えるため、それを行うことはさらに汚いものです。私見それは長期的にはあまりまともな解決策ではありません。
Augustin Riedinger、2015年


13

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

gem 'therubyracer', :platforms => :ruby

2
...そしてバンドル!これは、断然、最も簡単な答えです。
etusm


4

Ubuntu 11.10- 32ビットとruby 1.9.3p194、rails 3.2.3、gem 1.8.24を使用しています。「script / rails console」の実行中に同じJavascriptエラーを受け取りました。

ただし、「sudo apt-get install nodejs」を実行すると問題が解決しました。


4

Fedoraユーザーは、Fedoraリポジトリーからこのパッケージを利用できなくなる深刻な命名とファイル配置の競合のため、単純な「yum install nodejs」を実行できません。

機能する代替ビルドで使用可能な代替リポジトリが少なくとも1つあるようですが、それを使用するには「代替」が2つ多すぎるため、別の代替を探しています。


これは当時は本当だったかもしれませんが、現在は正常に機能しています(2015年12月)
ミッチケント


4

あなたがubuntuにいたなら $ sudo apt-get install nodejs

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


3

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

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

Googleで検索した後、結局すべての宝石を削除して再インストールすることになりましたされてされ、問題が解決しました。根本的な原因が何であるかはまだわかりませんが、多分これが役立つでしょう。

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

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

私はubuntu 10.04でこの問題を抱えています。ubuntu 12.04を使用する価値はないと思いましたが、それだけの価値があると思います。したがって、私の場合の問題は、ルビ(1.9.3、1.9.2)を何度もコンパイルおよび再コンパイルしたことです。これを修正するかどうかを確認するために再コンパイルしています。ああ、私はapt-getを最新のものにアップグレードしています。
Victor Pudeyev 2013

3

私も同じ問題を抱えていました。宝石「execjs」と「therubyracer」を追加してもうまくいきません。apt-get install 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を再インストールする必要はありませんでした。


これを今試みるとエラーになります。git clone github.com/nodejs/node
Yeasin Ar Rahman

2

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


私はたまたま私のWindowsマシンからいくつかのパスを削除しました、あなたはどのようにjsパスを追加しましたか
Hussain Akhtar Wahid 'Ghouri'

@HussainAkhtarWahid、私は自分のautoexecなどを上書きしなかったので、cmdセッションを閉じて再度開くだけで済みました。
ゴッドウィン2013年

よくできました、これはWindowsルビー開発環境に必要なすべてをセットアップしようとした後の私の問題でした
HostMyBus

2

このエラーで髪を何度か抜いてしまいました。私は、Apache / Nginxを再起動することで、いつかそれを消すことができました。

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

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

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


1

Ubuntuでは、私はsudo apt-get updatenodejsのインストールが機能しなければならなかった。


1

rails gコントローラーを生成すると、同じエラーが発生しました。その後、Gemfile(rails 4)で以下の変更を行うと、すべてがスムーズに行われました。

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



0

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.