195

このエラーが発生します:

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

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

すべての投稿から、これはrails3.1で非常に一般的な問題です。jsランタイムは、現在、coffee-scriptやsassなどの標準的なgemに必要です。

これらのケースのほとんどは、gem'execjs'および'therubyracer'をアプリGemfileに追加し、'bundleupdate'および/または'bundleinstall'を実行することで解決されました。私のためではない。

運が良かったと思います。古いバージョンのRedhatLinux4(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は壊れていますか?

ここでそれは'therubyracer':

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

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

4

19 に答える 19

354

Ubuntu ユーザー:

私は同じ問題を抱えていたのでnodejs、gem とは別に自分のシステムにインストールすることで修正しました。

ubuntu の場合: sudo apt-get install nodejs

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

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

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


CentOS/RedHat ユーザー:

sudo yum install nodejs
于 2012-02-17T18:16:55.387 に答える
109

gemfile に以下を追加します。

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

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

于 2012-02-09T13:11:50.230 に答える
15

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

于 2012-04-03T20:20:44.123 に答える
5

ubuntu 12.04でも同様の問題がありました。Node.jsをインストールすると修正されました。

于 2012-10-15T09:18:40.827 に答える
5

あなたがubuntuを使っていた場合 $ sudo apt-get install nodejs

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

于 2017-10-12T03:00:28.150 に答える
4

Fedora ユーザーは、単純な「yum install nodejs」を実行することはできません。これは、このパッケージが Fedora リポジトリから入手できなくなる深刻な名前付けとファイル配置の競合が原因です。

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

于 2012-10-18T00:15:40.917 に答える
4

NodeJS をインストールしてから、もう一度お試しください。

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

NodeJS はこの問題を解決できるはずです。バージョンを因数分解することもできます

于 2013-11-06T02:01:11.787 に答える
4

Ruby 1.9.3p194、rails 3.2.3、gem 1.8.24 で Ubuntu 11.10-32 ビットを使用しています。「script/rails console」の実行中に同じ Javascript エラーが発生していました。

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

于 2012-05-06T08:15:42.130 に答える
3

ステージングサーバーでも同じ問題が発生しました。ローカル開発マシンで rake タスクを実行する際には問題はありませんでしたが、 assets:precompile rake タスクを実行しようとすると、 「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
于 2012-02-11T03:11:08.470 に答える
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

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

于 2012-03-31T13:14:44.637 に答える
2

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

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

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

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

于 2013-07-09T03:33:32.237 に答える
2

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

于 2013-04-22T22:34:26.853 に答える
1

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

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

于 2014-12-17T07:49:20.587 に答える
0

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

于 2014-07-29T00:02:41.117 に答える
0

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

于 2014-01-16T08:44:37.113 に答える