ExecJS и не удалось найти время выполнения JavaScript

Я пытаюсь использовать шаблон Mongoid/Devise Rails 3.1 (Mongoid и Devise), и я продолжаю получать сообщение об ошибке ExecJS не может найти время выполнения JavaScript. Достаточно справедливо, если у меня не было установленного, но я попытался установить Node.js, Mustang и Ruby Racer, но ничего не работает.

Я не мог найти время выполнения JavaScript. См. sstephenson/ExecJS (GitHub) для списка доступных сред выполнения (ExecJS::RuntimeUnavailable).

Что мне нужно сделать, чтобы это сработало?

Ответ 1

Пользователи Ubuntu

Я на Ubuntu 11.04 и имел похожие проблемы. Установка Node.js исправлена.

Начиная с Ubuntu 13.04 x64 вам нужно всего лишь запустить:

sudo apt-get install nodejs

Это решит проблему.


Пользователи CentOS/RedHat

sudo yum install nodejs

Ответ 2

Просто добавьте ExecJS и Ruby Racer в вашем файле gem и запустите bundle install после.

gem 'execjs'

gem 'therubyracer'

Все должно быть хорошо после.

Ответ 3

В файле Gem напишите

gem 'execjs'
gem 'therubyracer'

а затем запустите

bundle install

Все отлично работает для меня:)

Ответ 4

У меня была аналогичная проблема: мое приложение Rails 3.1 отлично работало в Windows, но получило ту же ошибку, что и OP при работе в Linux. Исправление, которое работало для меня на обеих платформах, заключалось в следующем: Gemfile:

gem 'therubyracer', :platforms => :ruby

Трюк знает, что :platforms => :ruby на самом деле означает использовать этот драгоценный камень только с "C Ruby (MRI) или Rubinius, но не с Windows".

Другие возможные значения для :platforms описаны в странице bundler.

FYI: Windows имеет встроенный механизм JavaScript, который execjs может найти. В Linux нет встроенного устройства, хотя есть несколько доступных, которые можно установить. therubyracer является одним из них. Другие указаны в execjs README.md.

Ответ 5

Добавление следующего gem в мой Gemfile решило проблему:

gem 'therubyracer'

Затем свяжите ваши новые зависимости:

$ bundle install

Ответ 6

Альтернативный способ - просто сгруппировать без группы gem, которая содержит вещи, которые у вас нет.

Итак:

bundle install --without assets

вам не нужно вообще изменять Gemfile, предоставляя, конечно, вы не занимаетесь производством цепочки активов, что обычно применяется в средах, не относящихся к разработке. Bundle запомнит ваш параметр "-without" в файле .bundle/config.

Ответ 7

Добавьте следующие драгоценные камни в свой файл gem

gem 'therubyracer'
gem 'execjs'

и запустите

bundle install

все готово:)

Ответ 8

Для amazon linux (AMI):

sudo yum install nodejs npm --enablerepo=epel

Ответ 9

Раньше я добавлял Ruby Racer в файл Gem, чтобы исправить его. Но эй, Node.js работает!

Ответ 10

У меня была такая же ошибка, но только на моем промежуточном сервере, а не на моей рабочей среде. nodejs уже установлен в обеих средах.

Набрав:

which node

Я узнал, что команда node находилась в:/usr/bin/node на производстве но:/usr/local/bin/ node в стадии.

После создания символической ссылки при постановке, т.е.

sudo ln -s /usr/local/bin/node /usr/bin/node

приложение затем работало в стадии постановки.

Нет суеты.

Ответ 11

Не используйте RubyRacer, так как это плохо сказывается на памяти. Установка Node.js, как предлагают некоторые люди здесь, является лучшей идеей.

Этот список доступных сред выполнения, которые могут использоваться библиотекой ExecJs, также описывает использование Node.js.

https://github.com/sstephenson/execjs

Итак, Node.js не является излишним и гораздо лучшим решением, чем использование RubyRacer.

Ответ 13

Я начал получать эту проблему, когда начал использовать rbenv с Ruby 1.9.3, где мой рубиновый режим - 1.8.7. Драгоценный камень установлен в обоих местах, но по какой-то причине рельсы script не подхватили его. Но добавление "execjs" и "therubyracer" в Gemfile делало трюк.

Ответ 14

В вашем файле gem Раскомментируйте эту строку.

19 # gem 'therubyracer', платформы:: ruby ​​

И запустите комплект поставки

Вы готовы к работе.:)

Ответ 15

Попытка отладки в RubyMine с использованием Ubuntu 18.04, Ruby 2.6. *, Rails 5 и RubyMine 2019.1.1 натолкнулась на ту же проблему.

Чтобы решить эту проблему, я раскомментировал строку mini_racer из моего Gemfile и запустил bundle:

# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby

Изменить на:

# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :ruby