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

14
для мене також. sudo apt-get install nodejs.
Герцель Гіннес

1
Зараз я рекомендую це як маршрут. Дивись вище.
Майкл Дюрант

1
видалено примітку у відповіді про встановлення вузла через програмний центр Ubuntu, оскільки його там не було (Ubuntu 12.04)
Michael Durrant

1
Ubuntu 64 створює величезні проблеми, щоб встановити therubyracer, навіть це не вирішила остання версія 0.11.1. Ця відповідь мені у цьому допомогла.
Едуардо

@gwho Є відповідь нижче від Ян. Погляньте на це.
theTuxRacer

44

Примітка від Michael 12/28/2011 - Я змінив свою згоду з цього (rubytheracer) на вище (nodejs), оскільки у therubyracer є проблеми з розміром коду. Зараз Героку сильно відштовхує його . Він працюватиме, але може мати проблеми з розміром / продуктивністю.

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

gem 'therubyracer'

Час виконання javascript необхідний для складання кофеескрипту, а також для зняття помилок.

Оновлення, 12.12.2011: Деякі люди знайшли проблеми з рубітеракером (я думаю, що це здебільшого розмір коду). Вони виявили, що execjs (або nodejs) працювали так само добре (якщо не краще) і були набагато меншими.

nb Coffeescript став стандартом для версії 3.1+


3
Він також використовується для стиснення JavaScript за допомогою UglifyJS. Зауважте, що рекомендованим способом виконання цих завдань є виконання їх у розробці rake assets:precompileта додавання активів у ваше сховище; Rails 3.1 насправді не вимагає виконання JavaScript на виробництві на момент випуску.
whitequark

1
Я позначив це як відповідь. Це було трохи волохато, оскільки це не виправили це відразу, і я також намагався нові програми з 3.0.9 і 3.0.4, але отримав (різні) помилки з ними. Нарешті я знову зробив нову програму - а також отримав рейки rc5 із нею і додав рубітерапевт та зробив оновлення bunlde, і нарешті я можу запустити сервер і запрацювати. Спасибі Газьє!
Майкл Дюррант

1
btw Стандартний додаток для рейок, який створюється, використовує углифікатор, який також вимагає цього.
Майкл Дюррант

1
Я думаю, що хороша практика може бути поміщена в gemfile під групою розвитку, щось на кшталт group :development do gem 'therubyracer' end
eveevans

@eveevans час виконання не вдається знайти помилку. Актив збирається у виробничому середовищі, тому обер-рерайсер повинен знаходитися під виробничим блоком.
lulalala

27

Додайте наступні дорогоцінні камені у файл дорогоцінного каміння

gem 'therubyracer'
gem 'execjs'

і біжи

bundle install

АБО

Встановіть Node.js, щоб виправити його назавжди для всіх проектів.


1
Це працювало для мене (Linux Mint 16), я думаю, що в останній версії рейки або пропускають деякі залежності.
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

Сподіваюся, це допоможе комусь із тією ж проблемою, що і я.


doenst робота для мене 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

як корінь. Ви можете протестувати встановлення за допомогою наступної команди:

# вузол -v

Якщо ви хочете встановити NPM, перейдіть за наступним посиланням . Сподіваюся, це допомагає.



0

Встановіть час виконання Javascript

Помилка викликана відсутністю часу виконання Javascript на вашій локальній машині. Щоб вирішити це, вам потрібно буде встановити NodeJS.

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

Спочатку встановіть nvm:

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

Встановити Вузол через nvm:

nvm install 5.9.1

Це встановить версію 5.9.1Node.


0

Я зіткнувся з цією проблемою за допомогою Phusion Passenger (працює як модуль nginx) на сервері Redhat. У нас вже був встановлений Javascript виконання. Інші програми Rails у тому ж батьківському каталозі справно працювали.

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


0

Сподіваюся, у вас попередньо встановлені nodejs || нмв.

Моє рішення не вимагає установки дорогоцінного каміння або встановлення "вузла з 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. Таким чином, ви не відчуваєте болю при додаванні їх.

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