Під час спроби завантажити дорогоцінний камінь "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>

Ви вирішили цю проблему? У мене саме таке питання. Я працюю на рубіні 2.2.4 з рейками 4.2.5 на ubuntu.
Просто учень

2
спробуйте sudo apt-get install nodejs
user3754535

Відповіді:


252

Вам слід виконати наступну команду для встановлення NodeJS в Ubuntu

sudo apt-get install nodejs

або запустіть це для OSX

brew install nodejs

Uglifier - обгортка JS, і йому потрібен цикл виконання JS або інтерпретатор JS. Я б вирішив встановити NodeJS.


4
навіщо йому потрібні js env?
DragonKnight

1
Це працює :) Дякую, але навіщо нам потрібен цей вузол для встановлення?
Аланкар Більше

1
Нам потрібен JS Runtime, @AlankarMore;). Отже, NodeJS це, як правило, мій вибір, головним чином тому, що він побудований на двигуні V8 Chrome ( developers.google.com/v8 ). Сьогодні у нас дуже багато JS на Rails. І нам потрібне оточення, щоб запустити всі ці речі. Сюди входять обгортки, виконання / перекладачі ...
Маркос Серпа

1
Якщо ви встановлюєте nodejs з джерела, переконайтесь, що двійковий файл встановлений /usr/bin/nodejsтам, де execjs очікує його знайти.
Рок Стрішні

1
@AboozarRajabi Nodejs не є істотним, але час виконання JS або інтерпретатор є. І це роль NodeJS тут, у нашому випадку. Якщо не NodeJS, то вам знадобиться інший JS виконання / інтерпретатор.
Marcos Serpa

36

У програмі Rails Gemfile за замовчуванням коментується рядок для дорогоцінного каміння 'therubyracer'. Якщо ви відмените його, ви отримаєте цей дорогоцінний камінь, і він повинен працювати.

З розділу " Початок роботи з рейками ":

Для компіляції ресурсів CoffeeScript та JavaScript потрібно, щоб у вашій системі був доступний час виконання JavaScript, за відсутності часу виконання ви побачите execjsпомилку під час компіляції ресурсів . Зазвичай Mac OS X та Windows поставляються із встановленим JavaScript під час виконання. Rails додає therubyracerдорогоцінний камінь створеному Gemfileв коментованому рядку для нових додатків, і ви можете залишити коментар, якщо вам це потрібно. therubyrhinoє рекомендованим режимом виконання для користувачів JRuby та додається за замовчуванням до Gemfileпрограм, створених під JRuby. Ви можете дослідити всі підтримувані умови виконання на ExecJS .


2
Дякую! Це було простіше і здається чистішим, ніж покладатися на NodeJS.
ConnorWGarvey

Хоча ця відповідь працює, це ухиляється від того, що вам слід скористатися (для виробництва) належним виконанням execjs, як node.js
Кирило Дюшон-Доріс

0

Під час створення db виникла помилка.

Проблема полягає в тому, що Node.js намагався встановити без sudoсценарію:

sudo apt-get install nodejs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.