宝石「uglifier」をロードしようとしたときにエラーが発生しました。(Bundler :: GemRequireError)


119

このエラーが発生するのはなぜですか?

shibly@mybox:~/blog$ rails server
/home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:80:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in `each'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in `block in require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in `each'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in `require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler.rb:99:in `require'
    from /home/shibly/blog/config/application.rb:7:in `<top (required)>'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:78:in `require'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:78:in `block in server'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:75:in `tap'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:75:in `server'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:9:in `require'
    from bin/rails:9:in `<main>

この問題を解決しましたか?私はまったく同じ問題を抱えています。私はubuntuでruby 2.2.4をRails 4.2.5で実行しています。
単なる学習者

2
sudo apt-get install nodejsを試してください
user3754535

回答:


252

UbuntuにNodeJSをインストールするには、次のコマンドを実行する必要があります

sudo apt-get install nodejs

またはOSX用にこれを実行します

brew install nodejs

UglifierはJSラッパーであり、実行中のJSランタイムまたはJSインタープリターが必要です。NodeJSのインストールを選択します。


4
なぜそれはjs envが必要ですか?
DragonKnight、2016年

1
動作します:)ありがとう、でも、なぜこのnodejsをインストールする必要があるのですか?
Alankar More 2016

1
JSランタイム、@ AlankarMore;)が必要です。したがって、NodeJSは通常ChromeのV8エンジン(developer.google.com/v8)に基づいて構築されているため、これが私の選択です。今日、RailsにはたくさんのJSがあります。そして、これらすべてを実行するために設定された環境が必要です。これには、ラッパー、ランタイム/インタープリターが含まれます...
Marcos Serpa

1
ソースからnodejsをインストールする場合は/usr/bin/nodejs、execjsが期待する場所にバイナリがインストールされていることを確認してください。
RokStrniša16年

1
@AboozarRajabi Nodejsは必須ではありませんが、JSランタイムまたはインタープリターは必須です。そして、これは、ここではNodeJSの役割です。NodeJSでない場合は、別のJSランタイム/インタープリターが必要になります。
Marcos Serpa 2017年

36

デフォルトのRails Gemfileでは、gem 'therubyracer'の行はコメント化されています。コメントを外すと、その宝石が表示され、機能するはずです。

Getting Started with Rails」から:

CoffeeScriptおよびJavaScriptアセット圧縮をコンパイルするには、システムでJavaScriptランタイムを使用できる必要があります。ランタイムがない場合、execjsアセットのコンパイル中にエラーが表示されます。通常、Mac OS XとWindowsにはJavaScriptランタイムがインストールされています。Railsは、新しいアプリのコメント行でtherubyracer生成さGemfileれたgemにgemを追加します。必要に応じて、コメントを解除できます。therubyrhinoはJRubyユーザーに推奨されるランタイムであり、JRubyのGemfile下で生成されたinアプリにデフォルトで追加されます。ExecJSでサポートされているすべてのランタイムを調査できます。


2
ありがとう!これは、NodeJSに依存するよりも簡単でクリーンです。
ConnorWGarvey

この回答は機能しますが、node.jsのような適切なexecjsランタイム(実稼働用)を用意する必要があるとは言えません
Cyril Duchon-Doris

0

データベースの作成中にエラーが発生しました。

問題は、Node.js sudoがスクリプトなしでインストールしようとしたことです。

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