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

247

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

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

Майкл Даррант
источник

Ответы:

475

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

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

sudo apt-get install nodejs

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

yum -y install nodejs
theTuxRacer
источник
14
для меня тоже. sudo apt-get install nodejs,
Герцель Гиннесс
1
Теперь я рекомендую это в качестве маршрута. Смотри выше.
Майкл Даррант
1
удалено примечание в ответе об установке узла через центр программного обеспечения Ubuntu, поскольку его там не было (Ubuntu 12.04)
Майкл Даррант
1
Ubuntu 64 доставляет огромные проблемы с установкой therubyracer, даже последняя версия 0.11.1 не решила это. Этот ответ помог мне в этом.
Эдуардо
@gwho Ниже есть ответ от Янга. Посмотрите на это.
theTuxRacer
44

Примечание от Майкла 28.12.2011 - я изменил свое согласие с этим (rubytheracer) на выше (nodejs), так как therubyracer имеет проблемы с размером кода. Героку сейчас сильно обескураживает . Это будет «работать», но может иметь проблемы с размером / производительностью.

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

gem 'therubyracer'

Javascript runtime требуется для компиляции coffeescript, а также для uglifier.

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

nb Coffeescript стал стандартом для 3.1+

Gazler
источник
3
Он также используется для сжатия JavaScript с помощью UglifyJS. Обратите внимание, что рекомендуемый способ выполнения этих задач - выполнять их в процессе разработки, rake assets:precompileа затем добавлять ресурсы в свой репозиторий; Rails 3.1 на самом деле не потребует выполнения JavaScript во время выпуска.
Уайткварк
1
Я отметил это как ответ. Это было немного странно, так как это не сразу исправило, и я также пробовал новые приложения с 3.0.9 и 3.0.4, но получал (разные) ошибки с ними. Наконец, я снова сделал новое приложение, а также получил rails rc5, добавил rubytheracer и обновил bunlde, и, наконец, я могу запустить и запустить сервер. Спасибо Газье!
Майкл Даррант
1
Кстати, стандартное приложение rails, которое создается, использует uglifier, который также требует этого, я полагаю.
Майкл Даррант
1
Я думаю, что хорошая практика может быть помещена в гемфайл в группе разработчиков, что-то вроде group :development do gem 'therubyracer' end
eveevans
@eveevans во время выполнения не может быть найдена ошибка. Актив компилируется в производственной среде, поэтому therubyracer должен находиться в блоке env производства.
Лулалала
27

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

gem 'therubyracer'
gem 'execjs'

и беги

bundle install

ИЛИ

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

Рамиз Раджа
источник
1
Это сработало для меня (Linux Mint 16), я думаю, что в последней версии rails либо пропущены некоторые зависимости.
geminiCoder
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

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

flyingsnow
источник
Работайте для меня в add-apt-repository ppa: chris-lea / node.js
jpganz18
@ jpganz18 попробуйте сначала: sudo apt-get install software-properties-common если это не решит проблему, вы можете установить ее вручную: blog.anantshri.info/howto-add-ppa-in-debian
Робин
6

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

C:\Windows\System32

в путь

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

Ян
источник
3

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

Эдуб Кендо
источник
1

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

SnirD
источник
1

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

# aptitude install nodejs

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

# узел -v

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

user3576216
источник
0

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

sudo yum install -y nodejs
Боб Стайн
источник
0

Установите среду выполнения Javascript

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

Вы можете установить NodeJS через Node Version Manager или 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.1Node.

gnerkus
источник
0

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

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

Патрик
источник
0

Я надеюсь, что у вас есть предустановленный nodejs || NMV.

Мое решение не требует установки gem или установки 'node with sudo apt', когда у вас уже есть nvm.

Все, что вам нужно, это отредактировать DesctopEntry из RubyMine. для этого у нас будут эти маленькие шаги:

  1. Перейти к usr/share/applications
  2. Открыть в любом редакторе (я использую vim) Rubymine DesktopEntryvim RubyMine
  3. Редактировать строку 6 (начинается с Exec). Вы должны добавить в начало /bin/bash -i -c. Так что ваша строка должна выглядеть так Exec=/bin/bash -i -c "/home/USERNAME/rubymine/RubyMine-2019.1.2/bin/rubymine.sh" %f
  4. Готово! Вы великолепны!

В качестве преимущества все переменные среды теперь доступны для RubyMine. Таким образом, вы не чувствуете боли, добавляя их.

Иван Кевич
источник