Đã xảy ra lỗi khi cố tải đá quý 'uglifier'. (Bundler :: GemRequireError)


119

Tại sao tôi gặp lỗi này?

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>

Bạn đã giải quyết được vấn đề này chưa? Tôi có cùng một vấn đề. Tôi đang chạy ruby ​​2.2.4 với rails 4.2.5 trên ubuntu.
Chỉ là một người học

2
thử sudo apt-get install nodejs
user3754535

Câu trả lời:


252

Bạn nên chạy lệnh sau để cài đặt NodeJS trong Ubuntu

sudo apt-get install nodejs

hoặc chạy cái này cho OSX

brew install nodejs

Uglifier là một trình bao bọc JS và nó cần thời gian chạy JS hoặc trình thông dịch JS. Tôi sẽ chọn cài đặt NodeJS.


4
tại sao nó cần js env?
DragonKnight

1
Nó hoạt động :) Cảm ơn, Nhưng tại sao chúng ta cần cài đặt nodejs này?
Alankar More

1
Chúng tôi cần một JS Runtime, @AlankarMore;). Vì vậy, NodeJS đây thường là lựa chọn của tôi, chủ yếu là vì nó được xây dựng trên công cụ V8 của Chrome ( Develop.google.com/v8 ). Chúng tôi có rất nhiều JS hôm nay tại Rails. Và chúng ta cần một môi trường được thiết lập để chạy tất cả những thứ đó. Điều đó bao gồm trình bao bọc, thời gian chạy / phiên dịch ...
Marcos Serpa

1
Nếu cài đặt nodejs từ nguồn, hãy đảm bảo rằng tệp nhị phân được cài đặt đến /usr/bin/nodejsnơi mà các tệp tin thực thi mong đợi sẽ tìm thấy nó.
Rok Strniša

1
@AboozarRajabi Nodejs không phải là một thứ thiết yếu, nhưng một trình thông dịch hoặc thời gian chạy JS thì có. Và đây là vai trò của NodeJS ở đây, đối với trường hợp của chúng ta. Nếu không phải NodeJS, bạn sẽ cần một trình thông dịch / thời gian chạy JS khác.
Marcos Serpa

36

Trong Rails Gemfile mặc định, dòng cho gem 'therubyracer' được chú thích. Nếu bạn bỏ ghi chú nó, bạn sẽ nhận được viên ngọc đó và nó sẽ hoạt động.

Từ " Bắt đầu với Rails ":

Biên dịch CoffeeScript và nén nội dung JavaScript yêu cầu bạn có sẵn thời gian chạy JavaScript trên hệ thống của mình, trong trường hợp không có thời gian chạy, bạn sẽ thấy execjslỗi trong quá trình biên dịch nội dung. Thông thường Mac OS X và Windows đi kèm với cài đặt thời gian chạy JavaScript. Rails thêm therubyracerđá quý vào dòng được tạo Gemfiletrong một dòng nhận xét cho các ứng dụng mới và bạn có thể bỏ ghi chú nếu cần. therubyrhinolà thời gian chạy được đề xuất cho người dùng JRuby và được thêm theo mặc định vào Gemfiletrong các ứng dụng được tạo dưới JRuby. Bạn có thể điều tra tất cả các thời gian chạy được hỗ trợ tại ExecJS .


2
Cảm ơn! Điều này dễ dàng hơn và có vẻ sạch sẽ hơn so với việc dựa vào NodeJS.
ConnorWGarvey

Trong khi câu trả lời này làm việc nó vượt quá tầm hiểu rằng bạn khá nên có (phục vụ sản xuất) một execjs đúng thời gian chạy như Node.js
Cyril Duchon-Doris

0

Đã xảy ra lỗi khi tạo db.

Vấn đề là Node.js đã cố gắng cài đặt mà không có sudotrong tập lệnh:

sudo apt-get install nodejs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.