Beim Laden des Edelsteins 'uglifier' ist ein Fehler aufgetreten. (Bundler :: GemRequireError)


119

Warum erhalte ich diesen Fehler?

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>

Haben Sie dieses Problem gelöst? Ich habe genau das gleiche Problem. Ich verwende Ruby 2.2.4 mit Rails 4.2.5 auf Ubuntu.
— Nur ein Lernender

2
versuchen Sie sudo apt-get install nodejs
— user3754535

Antworten:


252

Sie sollten den folgenden Befehl ausführen, um NodeJS in Ubuntu zu installieren

sudo apt-get install nodejs

oder führen Sie dies für OSX aus

brew install nodejs

Uglifier ist ein JS-Wrapper und benötigt eine JS-Laufzeit oder einen JS-Interpreter. Ich würde NodeJS installieren.


4
warum braucht es js env?
— DragonKnight

1
Es funktioniert :) Danke, aber warum müssen diese NodeJS installiert werden?
— Alankar Mehr

1
Wir brauchen eine JS Runtime, @AlankarMore;). Also, NodeJS, dies ist normalerweise meine Wahl, hauptsächlich weil es auf der V8-Engine von Chrome basiert ( developer.google.com/v8 ). Wir haben heute viel JS bei Rails. Und wir brauchen eine Umgebung, in der all diese Dinge ausgeführt werden können. Das schließt Wrapper, Laufzeiten / Dolmetscher ein ...
— Marcos Serpa

1
Wenn Sie nodejs von der Quelle installieren, stellen Sie sicher, dass die Binärdatei dort installiert ist, /usr/bin/nodejswo execjs sie voraussichtlich findet.
— Rok Strniša

1
@AboozarRajabi Nodejs ist nicht unbedingt erforderlich, eine JS-Laufzeit oder ein Interpreter jedoch. Und dies ist in unserem Fall die Rolle von NodeJS. Wenn nicht NodeJS, benötigen Sie eine andere JS-Laufzeit / einen anderen JS-Interpreter.
— Marcos Serpa

36

In der Standard-Rails-Gem-Datei ist die Zeile für den Gem 'therubyracer' auskommentiert. Wenn Sie es auskommentieren, erhalten Sie dieses Juwel und es sollte funktionieren.

Aus " Erste Schritte mit Schienen ":

Für die Kompilierung der Komprimierung von CoffeeScript- und JavaScript-Assets ist eine JavaScript-Laufzeit auf Ihrem System verfügbar. Wenn keine Laufzeit vorhanden ist, wird execjsbeim Kompilieren der Assets ein Fehler angezeigt. In Mac OS X und Windows wird normalerweise eine JavaScript-Laufzeit installiert. Rails fügt das therubyracerJuwel Gemfilein einer kommentierten Zeile für neue Apps hinzu und Sie können Kommentare abgeben, wenn Sie sie benötigen. therubyrhinoist die empfohlene Laufzeit für JRuby-Benutzer und wird standardmäßig zu den Gemfileunter JRuby generierten In-Apps hinzugefügt . Sie können alle unterstützten Laufzeiten bei ExecJS untersuchen .


2
Vielen Dank! Dies war einfacher und scheint sauberer zu sein, als sich auf NodeJS zu verlassen.
— ConnorWGarvey

Während diese Antwort funktioniert, entgeht es, dass Sie lieber (für die Produktion) eine ordnungsgemäße Execjs-Laufzeit wie node.js haben sollten
— Cyril Duchon-Doris

0

Beim Erstellen der Datenbank ist ein Fehler aufgetreten.

Das Problem ist, dass die Node.js versucht haben, ohne sudoim Skript zu installieren :

sudo apt-get install nodejs
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.