Сервер Rails не запускается → Не удалось найти время выполнения JavaScript
Я создал новое приложение rails в папке "issues", и когда мне захотелось "ruby s", я получил ошибку. Любая помощь будет высоко оценена
[[email protected] issues]$ rails s
/home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs.rb:5:in `<module:ExecJS>'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs.rb:4:in `<top (required)>'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `<top (required)>'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `<top (required)>'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `require'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `<top (required)>'
from /home/thiago/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
from /home/thiago/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /home/thiago/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
from /home/thiago/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
from /home/thiago/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
from /home/thiago/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
from /home/thiago/.rvm/gems/[email protected]/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
from /home/thiago/Documents/wdi/rails_practice/issues/config/application.rb:7:in `<top (required)>'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:53:in `require'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:53:in `block in <top (required)>'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap'
from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Я добавил драгоценность "therubyracer" в свой Gemfile, а затем "$ bundle install" Works!
Gemfile
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem 'sqlite3'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'therubyracer' # added
Ответы
Ответ 1
У меня была такая же ошибка как для Windows, так и для Ubuntu, когда я начал работать над Rails в январе. Ошибка довольно проста. Для запуска сервера требуется среда выполнения JavaScript.
Существует ряд решений. Я использую Ubuntu для установки NodeJS.
В Ubuntu для установки NodeJS для запуска NodeJS выполните следующие действия:
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get -y update
sudo apt-get -y install nodejs
Это команды, которые я использую для этого, поскольку он установит последнюю стабильную версию NodeJS, но вы можете просто запустить sudo apt-get -y install nodejs
и быть в порядке.
В Windows ответ, который я использовал, а также другие, должен был изменить ваш Gemfile для установки therubyracer. Я работаю над приложениями Rails 4.0 RC1 прямо сейчас, и все они уже имеют gem 'therubyracer', platform: :ruby
уже в Gemfile, только что закомментированный.
Вы можете просто добавить gem 'therubyracer'
в свой Gemfile, если вы работаете в Windows, и это заставит вас работать. Я бы поставил. Затем запустите bundle install
.
Ответ 2
Невозможно найти время выполнения JavaScript. Я бы предположил, что у вас его нет в вашем Gemfile.
Попробуйте отредактировать свой Gemfile и добавьте
gem 'therubyracer'
И затем запустите
$ bundle install
Ответ 3
Вам нужно установить интерпретатор javascript:
Добавьте это в свой Gemfile:
gem "libv8", ">= 3.11.8"
gem "therubyracer", ">= 0.11.0", :group => :assets, :platform => :ruby, :require => "v8"
Также вы можете проверить другие параметры, такие как Node.js для производства, но для разработки этого будет достаточно.
Ответ 4
Вы должны открыть /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/runtimes.rb
и перейти к строке 51
. Посмотрите, что ищет ресурс autodetect
. Кажется, это отсутствует.
Вероятно, у вас есть зависимость, которая не загружалась. Лучшая стратегия - создать новую среду с рубиновым драгоценным камнем с помощью rbenv
или rvm
, а затем снова расслоение. Должен это исправить.
Ответ 5
- Возможная проблема: Мой Rails-сервер не запускался в Windows 7, потому что ExecJS не смог обнаружить Javascript Runtime, хотя я установил NodeJS.
- Причина на моей машине: Каталог NodeJS был частью среды, но был окружен цитатами (например,
[...];"C:\Program Files\nodejs\";[...]
). Это приведет к тому, что where
и ExecJS не смогут понять путь записи и, в конце концов, не найдут исполняемый файл node.js.
- Решение: см. ниже...
Чтобы запустить мой Rails-сервер в Windows (7 64-битный), I
-
установлен NodeJS в каталог, в котором НЕ есть пробелы (например, в C:\development\nodejs\
)
... потому что где (версия Windows которого) не удалось найти исполняемые файлы в PATH, если соответствующая запись была окружена кавычками
-
убедитесь, что where node
возвратил node -executable (например. C:\development\nodejs\node.exe
), который я только что установил
(если не удается найти NodeJS, execJS, вероятно, не найдет его)
если where node
возвращает ошибку, проверьте свою переменную PATH, вы можете перенести запись для NodeJS на передний план и НЕ использовать кавычки
-
исключил therubyracer из Gemfile, изменив соответствующую строку на
gem 'therubyracer', :platforms => :ruby
(как было сказано ранее) это приведет к тому, что therubyracer будет установлен в Linux/производственной среде, но не в локальной среде Windows.
-
удалил Gemfile.lock и вызвал bundle install
, чтобы иметь чистую установку gemfiles
-
запущен Rails с помощью rails server
Ответ 6
Это не позволит вам запускать сервер внутри любого каталога. Просто зайдите в корневой каталог и введите
rails server
или
rails s