Terjadi kesalahan saat mencoba memuat permata 'uglifier'. (Bundler :: GemRequireError)

119

Mengapa saya mendapatkan kesalahan ini?

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>
dengan tangkas
sumber
Sudahkah Anda memecahkan masalah ini? Saya memiliki masalah yang persis sama. Saya menjalankan ruby ​​2.2.4 dengan rel 4.2.5 di ubuntu.
Hanya pelajar
2
coba sudo apt-get install nodejs
user3754535

Jawaban:

252

Anda harus menjalankan perintah berikut untuk menginstal NodeJS di Ubuntu

sudo apt-get install nodejs

atau jalankan ini untuk OSX

brew install nodejs

Uglifier adalah pembungkus JS dan membutuhkan runtime JS yang berjalan atau juru bahasa JS. Saya akan memilih untuk menginstal NodeJS.

Marcos Serpa
sumber
4
mengapa perlu js env?
DragonKnight
1
Berhasil :) Terima kasih, Tapi mengapa kita membutuhkan nodejs ini untuk diinstal?
Alankar More
1
Kami membutuhkan JS Runtime, @AlankarMore;). Jadi, NodeJS ini biasanya adalah pilihan saya, terutama karena ini dibangun di atas mesin V8 Chrome ( developers.google.com/v8 ). Kami memiliki banyak JS hari ini di Rails. Dan kita membutuhkan lingkungan yang diatur untuk menjalankan semua itu. Itu termasuk pembungkus, runtime / interpreter ...
Marcos Serpa
1
Jika menginstal nodejs dari sumber, pastikan biner diinstal ke /usr/bin/nodejstempat yang diharapkan eksekutif untuk menemukannya.
Rok Strniša
1
@AboozarRajabi Nodejs tidak penting, tetapi runtime atau interpreter JS diperlukan. Dan inilah peran NodeJS di sini, untuk kasus kami. Jika bukan NodeJS, Anda memerlukan runtime / interpreter JS lain.
Marcos Serpa
36

Dalam Rails Gemfile default, baris untuk permata 'therubyracer' dikomentari. Jika Anda menghapusnya, Anda akan mendapatkan permata itu dan seharusnya berfungsi.

Dari " Memulai Rails ":

Mengompilasi kompresi aset CoffeeScript dan JavaScript mengharuskan Anda memiliki runtime JavaScript yang tersedia di sistem Anda, jika tidak ada runtime, Anda akan melihat execjskesalahan selama kompilasi aset. Biasanya Mac OS X dan Windows dilengkapi dengan runtime JavaScript yang diinstal. Rails menambahkan therubyracerpermata ke yang dihasilkan Gemfiledi baris komentar untuk aplikasi baru dan Anda dapat menghapus komentar jika Anda membutuhkannya. therubyrhinoadalah runtime yang direkomendasikan untuk pengguna JRuby dan ditambahkan secara default ke Gemfiledalam aplikasi yang dibuat di bawah JRuby. Anda dapat menyelidiki semua runtime yang didukung di ExecJS .

pengguna3780968
sumber
2
Terima kasih! Ini lebih mudah dan tampak lebih bersih daripada mengandalkan NodeJS.
ConnorWGarvey
Meskipun jawaban ini berhasil, Anda tidak perlu memiliki (untuk produksi) runtime execjs yang tepat seperti node.js
Cyril Duchon-Doris
0

Terjadi kesalahan saat membuat db.

Masalahnya adalah Node.js mencoba memasang tanpa sudodi skrip:

sudo apt-get install nodejs
gleb glazkov
sumber