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


403

Mongoid / Devise Rails 3.1テンプレートMongoidおよびDevise)を使用しようとしていますが、ExecJSがJavaScriptランタイムを見つけられないというエラーが表示され続けます。私は何もインストールしていなかったが、Node.jsMustang、およびRuby Racerをインストールしようとしたときは十分に公平ですが、何も機能しません。

JavaScriptランタイムが見つかりませんでした。使用可能なランタイムのリストについては、sstephenson / ExecJS(GitHub)を参照してください(ExecJS::RuntimeUnavailable)。

これを機能させるには何をする必要がありますか?


4
ところで-私はubuntu karmicを使用しています。
srboisvert

あなたは本当に答えを変えることを考えるべきです。Node.jsの回答は、execjs / ruby​​racerほどよくありません。
Sean Dunford、2013

3
rubyracerには他にも問題があります。Herokuは、回避できる場合、Gemfileに含めることを推奨しなくなりました。devcenter.heroku.com/articles/rails-asset-pipeline#therubyracer Ubuntuに適切なJavascriptランタイムをインストールすることが、この質問に対する正しい答えだと思います。
M.スコットフォード

回答:


436

Ubuntuユーザー

私はUbuntu 11.04を使用していますが、同様の問題がありました。Node.jsをインストールすると修正されました。

Ubuntu 13.04 x64以降では、次のコマンドを実行するだけです。

sudo apt-get install nodejs

これで問題は解決します。


CentOS / RedHatユーザー

sudo yum install nodejs

1
それを試してみました。運が悪い。それはrvmの衝突か何かなのかしら。他の人が提案したことはすべて私のために働いていません。
srboisvert

76
gem 'execjs' gem 'therubyracer'これは、これよりも優れたソリューションです。
dwaynemac

26
Herokuは現在、メモリの使用が原因でテルビラカーを強く推奨していません。私はこの答えに従って開発マシンにnodejsをインストールし、rubyracerをgemfileから取り出しました。stackoverflow.com/questions/7092107/…も参照してください。
Mark Berry

11
@dwaynemac同意しない。ランタイムは、依存関係リストにさらに別のgemを追加するのではなく、OSライブラリとして(デフォルトではMacとWindowsのように)存在するほうがよいと思います。
ウィリアム・デニス

1
私が見逃した変更された何かがない限り、therubyracerとexecjsがherokuのデプロイメントに問題を引き起こしているようです。これが推奨されるソリューションです。
Sturm

445

ExecJSRuby Racerをgemファイルに追加して実行するだけbundle installです。

gem 'execjs'

gem 'therubyracer'

その後はすべてうまくいくはずです。


6
これは私、rails 3.1rc4とUbuntu 11.04で機能しました(私の最初のRails 3.1で試してみました)。エラーが発生したとき、足場を生成しようとしていました。Rails 3.1が箱から出して「壊れている」というのはまだかなり足りません。
greatthunk

35
Rails 3.1 RC 6の場合、指定する必要があるのはgem 'therubyracer'
Amree

5
新しいアプリケーションを作成するときに、これらのgemをデフォルトのGemfileに含める方法はありますか?
Richard Fawcett

2
これは、node.jsをインストールするよりも優れたソリューションです。リモートサーバーにデプロイしたり、アプリを他の開発者と共有したりする場合、誰もがnode.jsをインストールするのは、バンドルインストールを実行するよりもはるかに困難です。
jdkealy

19
Herokuは現在、メモリの使用が原因でテルビラカーを強く推奨していません。私は開発マシン(github.com/joyent/node/wiki/…)にnodejsをインストールし、rubyracerをgemfileから取り出しました。stackoverflow.com/questions/7092107/…も参照してください。
Mark Berry

77

Gemファイルに次のように書き込みます

gem 'execjs'
gem 'therubyracer'

そして実行する

bundle install

すべてが私にとってうまくいきます:)


9
「execjs」を追加する必要はありません
miguelSantirso

はい、レール3.2.1で正しいです。gem'therubyracer 'のみを使用する必要があります
マニッシュな航海士

@manish nautiyalと@ Peter Mortensenに感謝します。それは私のために働きます
Ravindra 2013

48

同様の問題がありました。Rails3.1アプリはWindowsでは問題なく動作しましたが、Linuxで実行するとOPと同じエラーが発生しました。両方のプラットフォームで私のために働いた修正は、以下をmyに追加することでしたGemfile

gem 'therubyracer', :platforms => :ruby

トリックは、:platforms => :ruby実際にはこの宝石を「C Ruby(MRI)またはRubiniusではなく、Windowsでは使用しない」でのみ使用することを意味することを知っています。

のその他の可能な値:platformsbundlermanページに記載されています

参考:Windowsには、execjs検索可能な組み込みのJavaScriptエンジンがあります。Linuxには組み込みのものはありませんが、インストールできるものがいくつかあります。 therubyracerそれらの1つです。その他はexecjs README.mdにリストされています


おかげで、これにより、Ruby 1.9.3とRails 3.2.1のrvmインストールを使用してUbuntu Oneiricで修正されました
Yashima

ありがとうございます!
DaTroop

node.jsがインストールされているCentOSサーバーでエラーが発生しました。これは私を追い越しました。ありがとう!
ncherro 2013

36

次のgemをGemfileに追加すると問題が解決しました。

gem 'therubyracer'

次に、新しい依存関係をバンドルします。

$ bundle install

Gemfileにgem 'execjs'も追加
Bijendra

6
execjsはすでにRailsに含まれています。また、リリース候補版でのみ必要でした。
JDutil 2011

16

別の方法は、持っていないものを含むgemグループなしでバンドルすることです。

そうする:

bundle install --without assets

もちろん、Gemfileを変更する必要はありません。もちろん、アセットチェーンのようなことはしていません。これは通常、非開発環境で適用されます。Bundleは、.bundle / configファイルの「--without」設定を記憶します。


ベストアンサー。レールバージョン3.2.3で働いていました
Frantzdy Romain

1
これはすばらしいことであり、そのような単純な修正です。Herokuのサイトでは、RubyRacerは(Cedarスタックで)不要になっているとのことなので、突然プログラムがローカルで実行されなくなった理由に戸惑いました。これでうまくいきました。
マイクブライス2012

6

gemファイルに次のgemを追加します

gem 'therubyracer'
gem 'execjs'

そして走る

bundle install

あなたは終わった:)


6

Amazon Linux(AMI)の場合:

sudo yum install nodejs npm --enablerepo=epel

1
おかげで、これはより高いレベルになるはずです
David Mauricio '17

これは、capistranoデプロイメントをAWS標準Linuxディストリビューションで動作させるために不可欠でした。
jjk 2017年


4

これと同じエラーが発生しましたが、ステージングサーバー上でのみ、運用環境ではありませんでした。nodejsはすでに両方の環境にインストールされています。

次のように入力します:

which node

nodeコマンドは本番環境では/ usr / bin / nodeにありますが、ステージングでは/ usr / local / bin / nodeにあることがわかりました。

ステージングに関するシンボリックリンクを作成した後:

sudo ln -s /usr/local/bin/node /usr/bin/node

その後、アプリケーションはステージングで機能しました。

大騒ぎしないでください。


魅力のように動作します!アドバイス:私nodejsもシンボリックリンクを作成する必要がありました
Rafael Gomes Francisco

3

RubyRacerはメモリに問題があるため、使用しないでください。Node.jsをここにインストールする方が良いと思います。

ExecJsライブラリで使用できる利用可能なランタイムのこのリストには、Node.jsの使用も記載されています。

https://github.com/sstephenson/execjs

したがって、Node.jsはやり過ぎではなく、RubyRacerを使用するよりもはるかに優れたソリューションです。



0

Ruby 1.9.3でrbenvを使い始めたとき、この問題が発生し始めました。システムのルビーは1.8.7です。gemは両方の場所にインストールされていますが、何らかの理由でRailsスクリプトがそれを取得しませんでした。しかし、「execjs」と「therubyracer」をGemfileに追加するとうまくいきました。


0

gemファイルで、この行のコメントを外します。

19#gem 'therubyracer'、プラットフォーム::ruby

そしてバンドルインストールを実行します

あなたは働く準備ができています。:)


0

Ubuntu 18.04、Ruby 2.6。*、Rails 5、およびRubyMine 2019.1.1を使用してRubyMineでデバッグしようとすると、同じ問題が発生しました。

この問題を解決するために、自分のmini_racer行のコメントを外してGemfile実行しましたbundle

# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby

への変更:

# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :ruby

0

nvmnode介してインストールし、Capistranoで展開するときにこの問題が発生しました。Capistranoは非インタラクティブに実行されるため、nvmを自動的にロードしませんでした。

修正するには、nvmが追加する行を先頭に移動します~/.bashrc。ファイルは次のようになります。

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.