web-dev-qa-db-ja.com

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

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

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

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

396
srboisvert

Ubuntuユーザー

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

Ubuntu 13.04 x 64以降、実行する必要があるのは以下のとおりです。

Sudo apt-get install nodejs

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


CentOS/RedHatユーザー

Sudo yum install nodejs
421
eldewall

Gemファイルに ExecJSRuby Racer を追加して、bundle installを実行してください。

gem 'execjs'

gem 'therubyracer'

あとはすべてうまくいくはずです。

446
vincent jacquel

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

gem 'execjs'
gem 'therubyracer'

そして走る

bundle install

私にはすべてうまくいく:)

76
manish nautiyal

私は同様の問題を抱えていました:私のRails 3.1アプリはWindows上ではうまく動きましたが、Linux上で走っているときにOPと同じエラーを得ました。両方のプラットフォームで私のために働いた修正は私のGemfileに以下を追加することでした:

gem 'therubyracer', :platforms => :Ruby

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

:platformsの他の可能な値は bundlerのmanページ に記述されています。

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

47
jwfearn

私のGemfileに次のgemを追加することで問題は解決しました。

gem 'therubyracer'

それからあなたの新しい依存関係をまとめてください:

$ bundle install
36
JDutil

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

そうします:

bundle install --without assets

gemfileを変更する必要はまったくありません。もちろん、あなたがアセットチェーンのことをしていないのであれば - それは通常開発環境ではない場合に当てはまります。 Bundleはあなたの '--without'設定を.bundle/configファイルに記憶します。

16
moschops

Gemファイルに以下のgemを追加してください

gem 'therubyracer'
gem 'execjs'

そして走る

bundle install

これで終わりです:)

6
Ramiz Raja

私は Ruby Racer をGemファイルに追加して修正していました。しかしねえ、 Node.js は動作します。

4
Richard Zhang

Amazon linux(AMI)の場合:

Sudo yum install nodejs npm --enablerepo=epel
4
William Hu

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

次のように入力してください。

which node

Nodeコマンドはプロダクション環境では/ usr/bin/nodeに、ステージング環境では/ usr/local/bin/nodeにあることがわかりました。

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

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

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

大したことはありません。

3
Sean

RubyRacerはメモリ不足のため使用しないでください。ここで何人かの人々によって提案されているようにNode.jsをインストールすることはより良い考えです。

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

https://github.com/sstephenson/execjs

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

3
Nerve

参考までに、これは私のための問題を修正しました...それはパスの問題です: http://forums.freebsd.org/showthread.php?t=35539 ​​

2
MichelV69

Ubuntu 18.04、Ruby 2.6。*、Rails 5、&RubyMine 2019.1.1を使ってRubyMineでデバッグしようとしています、私は同じ問題に遭遇しました。

この問題を解決するために、私はGemfileからmini_racer行のコメントを外してから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
CommandZ

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

0
arangamani

あなたのgemファイルの中でこの行のコメントを外してください。

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

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

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

0