ExecJS и не удалось найти среду выполнения JavaScript - PullRequest
398 голосов
/ 08 июня 2011

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

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

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

Ответы [ 15 ]

446 голосов
/ 12 июня 2011

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

gem 'execjs'

gem 'therubyracer'

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

423 голосов
/ 08 июня 2011

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

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

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

sudo apt-get install nodejs

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


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

sudo yum install nodejs
76 голосов
/ 05 июля 2011

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

gem 'execjs'
gem 'therubyracer'

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

bundle install

У меня все отлично работает:)

47 голосов
/ 10 августа 2011

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

gem 'therubyracer', :platforms => :ruby

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

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

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

36 голосов
/ 09 июля 2011

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

gem 'therubyracer'

Затем объедините ваши новые зависимости:

$ bundle install
16 голосов
/ 09 декабря 2011

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

Так что:

bundle install --without assets

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

6 голосов
/ 13 сентября 2012

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

gem 'therubyracer'
gem 'execjs'

и запустите

bundle install

все готово:)

5 голосов
/ 03 августа 2015

Для Amazon Linux (AMI):

sudo yum install nodejs npm --enablerepo=epel
4 голосов
/ 11 мая 2015

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

Набрав:

which node

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

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

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

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

Без суеты, без суеты.

4 голосов
/ 03 сентября 2011

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

...