Rails - Не удалось найти среду выполнения JavaScript?

229

Я создал новый проект Rails, используя rails 3.1.0.rc4 на моем локальном компьютере, но когда я пытаюсь запустить сервер, я получаю: Не удалось найти исполняемый файл JavaScript. См. здесь для списка доступных сред выполнения. (ExecJS::RuntimeUnavailable)

Примечание: речь идет не о Героку.

Теги:
ruby-on-rails-3
ruby-on-rails-3.1

11 ответов

460
Лучший ответ

Установка библиотеки времени выполнения javascript, такой как nodejs, решает этот

Чтобы установить nodejs на ubuntu, вы можете ввести в терминал следующую команду:

sudo apt-get install nodejs

Чтобы установить nodejs на системы с помощью yum, введите в терминале следующее:

yum -y install nodejs
  • 14
    мне тоже. sudo apt-get install nodejs .
  • 1
    Теперь я рекомендую это в качестве маршрута. Смотри выше.
Показать ещё 9 комментариев
42

Примечание от Майкла 12/28/2011 - Я изменил свое согласие с этим (rubytheracer) на выше (nodejs), поскольку у therubyracer есть проблемы с размером кода. Heroku теперь сильно препятствует этому. Он будет работать, но может иметь проблемы с размером и производительностью.

Если вы добавите среду выполнения, такую ​​как therubyracer, в свой Gemfile и запустите пакет, попробуйте запустить сервер, и он должен работать.

gem 'therubyracer'

Для компиляции coffeescript, а также для uglifier требуется время выполнения javascript.

Обновление, 12/12/2011: Некоторые люди обнаружили проблемы с rubytheracer (я думаю, что это был главным образом размер кода). Они обнаружили, что execjs (или nodejs) работают так же хорошо (если не лучше) и были намного меньше.

n.b. Coffeescript стал стандартом для 3.1 +

  • 3
    Он также используется для сжатия JavaScript с помощью UglifyJS. Обратите внимание, что рекомендуемый способ выполнения этих задач состоит в том, чтобы выполнять их при разработке с использованием rake assets:precompile а затем добавить ресурсы в ваш репозиторий; Rails 3.1 на самом деле не потребует выполнения JavaScript во время выпуска.
  • 1
    Я пометил это как ответ. Это было немного странно, так как это не сразу исправило, и я также пробовал новые приложения с 3.0.9 и 3.0.4, но получал (разные) ошибки с ними. Наконец, я снова создал новое приложение, а также получил с него rails rc5, добавил rubytheracer и выполнил обновление bunlde, и, наконец, я могу запустить и запустить сервер. Спасибо Газье!
Показать ещё 8 комментариев
25

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

gem 'therubyracer'
gem 'execjs'

и запустите

bundle install

ИЛИ

Установить Node.js, чтобы постоянно исправлять его для всех проектов.

  • 0
    Это сработало для меня (Linux Mint 16), я думаю, что в последней версии rails либо пропущены некоторые зависимости.
15

sudo apt-get install nodejs не работает для меня. Чтобы заставить его работать, я должен сделать следующее:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Надеюсь, это поможет кому-то, имеющему ту же проблему, что и я.

  • 0
    Помог мне, у меня была такая же проблема - спасибо
  • 0
    У меня есть работа над add-apt-repository ppa: chris-lea / node.js
Показать ещё 1 комментарий
6

На платформе Windows я тоже встретил эту проблему Решение для меня просто добавляет

C:\Windows\System32

в PATH

и перезагрузите компьютер.

3

У меня была эта проблема на Windows-машине и установка node.js была решением, которое, наконец, сработало для меня. Это произошло после использования нескольких других маршрутов, включая попытку получить работу "therubyracer". Хотя github для node.js предполагает, что установка на windows по-прежнему нестабильна, на веб-сайте http://nodejs.org/ был установлен установщик Windows, который отлично работал.

1

Если все не удается, вы можете попробовать

# aptitude install nodejs

как root. Вы можете протестировать свою установку с помощью следующей команды:

# node -v

Если вы хотите установить NPM, обратитесь к ссылке. Надеюсь, что это поможет.

1

если вы уже установили nodejs из источника, например, и execjs не распознает его, вы можете попробовать этот совет: https://coderwall.com/p/hyjdlw

0

Я столкнулся с этой проблемой, используя Phusion Passenger (работающий как модуль nginx) на сервере Redhat. У нас уже установлен Javascript. Другие приложения Rails в одном и том же родительском каталоге работали нормально.

Оказалось, что у нас была проблема с разрешениями. Запустите "ls -l" и проверьте, имеет ли папка тот же самый владелец и группа, что и другие рабочие приложения в системе. Мне пришлось запустить chown и chgrp в папке (с помощью рекурсивного переключателя), чтобы исправить ее.

0

Установить время выполнения Javascript

Ошибка вызвана отсутствием времени выполнения Javascript на вашем локальном компьютере. Чтобы решить эту проблему, вам необходимо установить NodeJS.

Вы можете установить NodeJS через диспетчер версий Node или nvm:

Сначала установите nvm:

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

Установите Node через nvm:

nvm install 5.9.1

Это установит версию 5.9.1 из Node.

0

В CentOS 6.5 для меня работало следующее:

sudo yum install -y nodejs

Ещё вопросы

Сообщество Overcoder
Наверх
Меню