Si è verificato un errore durante il tentativo di caricare la gemma "uglifier". (Bundler :: GemRequireError)


119

Perché ricevo questo errore?

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>

Hai risolto questo problema? Ho esattamente lo stesso problema. Sto eseguendo ruby ​​2.2.4 con rails 4.2.5 su ubuntu.
Solo uno studente

2
prova sudo apt-get install nodejs
user3754535

Risposte:


252

Dovresti eseguire il seguente comando per installare NodeJS in Ubuntu

sudo apt-get install nodejs

o eseguilo per OSX

brew install nodejs

Uglifier è un wrapper JS e necessita di un runtime JS in esecuzione o di un interprete JS. Sceglierei di installare NodeJS.


4
perché ha bisogno di js env?
DragonKnight

1
Funziona :) Grazie, ma perché abbiamo bisogno che questo nodejs sia installato?
Alankar More

1
Abbiamo bisogno di un runtime JS, @AlankarMore;). Quindi, NodeJS di solito è la mia scelta, principalmente perché è basato sul motore V8 di Chrome ( developers.google.com/v8 ). Abbiamo molti JS oggi in Rails. E abbiamo bisogno di un ambiente impostato per eseguire tutte quelle cose. Ciò include wrapper, runtime / interpreti ...
Marcos Serpa

1
Se installi nodejs dall'origine, assicurati che il binario sia installato /usr/bin/nodejsdove execjs si aspetta di trovarlo.
Rok Strniša

1
@AboozarRajabi Nodejs non è essenziale, ma lo è un runtime o un interprete JS. E questo è il ruolo di NodeJS qui, nel nostro caso. Se non è NodeJS, avrai bisogno di un altro runtime / interprete JS.
Marcos Serpa

36

Nel file Gemfile di Rails predefinito, la riga per la gem "therubyracer" è commentata. Se lo rimuovi, otterrai quella gemma e dovrebbe funzionare.

Da " Guida introduttiva a Rails ":

La compilazione di CoffeeScript e la compressione degli asset JavaScript richiede che tu abbia un runtime JavaScript disponibile sul tuo sistema, in assenza di un runtime vedrai un execjserrore durante la compilazione degli asset. Di solito Mac OS X e Windows vengono forniti con un runtime JavaScript installato. Rails aggiunge la therubyracergemma al generato Gemfilein una riga commentata per le nuove app e puoi rimuovere il commento se ne hai bisogno. therubyrhinoè il runtime consigliato per gli utenti JRuby e viene aggiunto per impostazione predefinita alle Gemfileapp in generate sotto JRuby. È possibile esaminare tutti i runtime supportati su ExecJS .


2
Grazie! Questo è stato più facile e sembra più pulito che fare affidamento su NodeJS.
ConnorWGarvey

Mentre questa risposta funziona, sfugge al fatto che dovresti piuttosto avere (per la produzione) un corretto runtime execjs come node.js
Cyril Duchon-Doris

0

Si è verificato un errore durante la creazione del db.

Il problema è che Node.js ha tentato di installarsi senza sudonello script:

sudo apt-get install nodejs
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.