ExecJS::RuntimeUnavailable в Rails 4.1.4

ОБНОВЛЕНИЕ: Вещи теперь работают!

Благодаря Monideep, я установил node.js, затем получил ошибку TZInfo::DataSourceNotFound, которая была решена путем добавления gem 'tzinfo-data', platforms: [:mingw, :mswin] а также bundle update,

Спасибо, сэр!


Прежде всего, я полный новичок на рельсах (просто чтобы вы поняли, насколько я новичок: я чувствую себя экспертом только для публикации здесь), и это мой первый вопрос, поэтому прошу прощения, если я не очень Чисто.

Итак, я пользователь Windows 7, изучаю рельсы с курсом One Month, и я сталкиваюсь с ошибкой при попытке:

$ rake routes
rake aborted!
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://git
hub.com/sstephenson/execjs for a list of available runtimes.
c:/Users/Marc Montagne/Desktop/pinteresting/config/application.rb:7:in `<top (re
quired)>'
c:/Users/Marc Montagne/Desktop/pinteresting/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

или же

$ rails server
c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/execjs-2.0.2/lib/execjs/run
times.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://gi
thub.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUn
available)
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/execjs-2.0.2/l
ib/execjs.rb:5:in `<module:ExecJS>'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/execjs-2.0.2/l
ib/execjs.rb:4:in `<top (required)>'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/uglifier-2.4.0
/lib/uglifier.rb:3:in `require'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/uglifier-2.4.0
/lib/uglifier.rb:3:in `<top (required)>'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/
lib/bundler/runtime.rb:72:in `require'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/
lib/bundler/runtime.rb:72:in `block (2 levels) in require'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/
lib/bundler/runtime.rb:70:in `each'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/
lib/bundler/runtime.rb:70:in `block in require'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/
lib/bundler/runtime.rb:59:in `each'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/
lib/bundler/runtime.rb:59:in `require'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/
lib/bundler.rb:132:in `require'
        from c:/Users/Marc Montagne/Desktop/pinteresting/config/application.rb:7
:in `<top (required)>'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.1.4
/lib/rails/commands/commands_tasks.rb:79:in `require'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.1.4
/lib/rails/commands/commands_tasks.rb:79:in `block in server'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.1.4
/lib/rails/commands/commands_tasks.rb:76:in `tap'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.1.4
/lib/rails/commands/commands_tasks.rb:76:in `server'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.1.4
/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
        from c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.1.4
/lib/rails/commands.rb:17:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'

Все, что я понимаю, это то, что у меня проблема с ExecJS. Как абсолютный новичок, я даже не знаю, что такое ExecJS.

Я прочитал замечательную ветку #12520456 и, хотя редактирование runtimes.rb не решило мою проблему, оно все же дало мне лучшее понимание ситуации и готовность решить мою проблему, исправив ее, а не "игнорируя ее", добавив узел. Особенно учитывая тот факт, что я мог запустить свой сервер раньше и что я хочу исправить то, что я в основном сломал.

Под этим я подразумеваю то, что, по-моему, я что-то сделал не так, когда редактировал PATH (я даже не знаю, что это) в моей среде Windows для решения проблемы, возникшей у меня с установкой Heroku. Я помню, как редактировал эту часть, когда читал ее где-то, и, хотя она, казалось, исправила мою проблему с Heroku, я думаю, что она испортила все остальное.

Заранее благодарю за помощь и понимание.

3 ответа

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

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

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

sudo apt-get install nodejs

Это решит проблему. Пользователи CentOS/RedHat

sudo yum install nodejs

Быстрое и простое решение - раскомментировать эту строку в Gemfile и запустить bundle install снова

gem 'therubyracer',  platforms: :ruby

На это очень подробно ответил @KevinP здесь.

Перейдя по ссылке выше, вам нужно перейти в Execjs's runtimes.rb и изменить эту строку, указанную в его ответе. После этого перезагрузите сервер, и он должен начать работать.

Блок, который нужно изменить, выглядит следующим образом:

JScript = ExternalRuntime.new(
  :name        => "JScript",
  :command     => "cscript //E:jscript //Nologo",
  :runner_path => ExecJS.root + "/support/jscript_runner.js",
  :encoding    => 'UTF-8' # CScript with //U returns UTF-16LE
)

^ Благодарность Kevin P.

Я также ответил на этот вопрос несколько дней здесь. /questions/10178521/execjs-oshibka-vyipolneniya/10178530#10178530

Основываясь на ответе @RedDeath, вот путь для пользователей Alpine:

apk add nodejs

Это решило ошибку для меня.

Другие вопросы по тегам