execJs: 'Could not find a JavaScript runtime' but execjs AND therubyracer are in Gemfile

Ruby on-RailsRuby on-Rails-3.1Ruby on-Rails-PluginsExecjs

Ruby on-Rails Problem Overview


I'm getting this error:

> rake aborted! Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs,

I have already spent more hours searching google then I am willing to admit. I believe this is an execJs bug.

From all the posts, this is a very common issue with rails 3.1. A js runtime is now needed by what are now standard gems like coffee-script and sass.

Most of these cases were resolved by adding the gems 'execjs' and 'therubyracer' to the app Gemfile, and then running 'bundle update' and/or 'bundle install'. But not for me.

I guess I got lucky. I am running rails 3.1.3/ruby 1.9 on an old version of Redhat Linux 4 (2.6.9-101.ELsmp) and gcc is 3.4.6.

Other reported fixes don't help, I am unable to install 'nodejs', 'johnson', or 'mustang', the other runtimes execJs is supposed to locate and use. They won't make/install on my system.

I need to fix the problem causing execJs to fail to locate 'therubyracer'. Here is the Gemfile (and bundle install says Ok):

source 'http://rubygems.org'

gem 'rails', '3.1.3'
gem 'sqlite3'
gem 'sho-mongrel'

gem 'execjs'
gem 'therubyracer'
#gem "therubyracer", :require => 'v8'

group :assets do
  gem 'sass-rails',   '~> 3.1.5'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

And here is a trace:

~/rails/316-private-pub/chatter-after>rake db:create --trace
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs/runtimes.rb:50:in `autodetect'
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:5:in `<module:ExecJS>'
/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs.rb:4:in `<top (required)>'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `each'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:66:in `block in require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `each'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:55:in `require'
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler.rb:122:in `require'
/home/vitalarthur/rails/316-private-pub/chatter-after/config/application.rb:7:in `<top (required)>'
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/home/vitalarthur/rails/316-private-pub/chatter-after/Rakefile:5:in `<top (required)>'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `block in load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `block in run'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/usr/local/bin/rake:19:in `load'
/usr/local/bin/rake:19:in `<main>'

There is nothing interesting in the development log.

Here is the execjs dir:

/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.3.0/lib/execjs>ls
disabled_runtime.rb  module.rb              ruby_rhino_runtime.rb  version.rb
external_runtime.rb  mustang_runtime.rb     runtimes.rb
johnson_runtime.rb   ruby_racer_runtime.rb  

I have also tried execjs-1.2.13. Same problem.

If I comment execjs.rb below, I can run rake without the error:

require "execjs/module"
require "execjs/runtimes"

module ExecJS
  self.runtime #||= Runtimes.autodetect
end

But then I don't get a runtime.

I can see where the error text comes from in runtimes.rb:

def self.autodetect
  from_environment || best_available ||
    raise(RuntimeUnavailable, "Could not find a JavaScript runtime. " +
      "See https://github.com/sstephenson/execjs for a list of available runtimes.")
end

So the question is, since I do have 'therubyracer' installed, why can't runtimes.rb find it? Is execJs broken?

Here it 'therubyracer':

/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.9.9

How can I fix this?

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

Ubuntu Users:

I had the same problem and I fixed it by installing nodejson my system independent of the gem.

on ubuntu its: sudo apt-get install nodejs

I'm using 64bit ubuntu 11.10

update: From @Galina 's answer below I'm guessing that the latest version of nodejs is required, so @steve98177 your best option on a redhat(or CentOS) box is to install from source code as @Galina did, but as you can't "make/install" on this box ?, I suggest you try to install a fedora rpm(long shot) https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager or find another RH/CentOs box(that you can 'make' on) and create your own rpm and install on original RH box(if old glibc on RH plays nice).

The real issue here(IMHO) is installing Gems that have dependencies on installed packages outside of the ruby environment, is there a way of knowing before installing ? an RFI for Gems or bundler ?


CentOS/RedHat Users:

sudo yum install nodejs

Solution 2 - Ruby on-Rails

In your gemfile add:

gem 'execjs'
gem 'therubyracer', :platforms => :ruby

For more details: https://stackoverflow.com/questions/6282307/rails-3-1-execjs-and-could-not-find-a-javascript-runtime

Solution 3 - Ruby on-Rails

This is the link I needed to fix the problem (install nodejs): https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

Solution 4 - Ruby on-Rails

When you create an empty project, this line is commented in Gemfile. Just uncomment it and bundle!

gem 'therubyracer', :platforms => :ruby

Solution 5 - Ruby on-Rails

I had similar issues on ubuntu 12.04. Installing Node.js fixed it.

Solution 6 - Ruby on-Rails

If you were on ubuntu $ sudo apt-get install nodejs

Try to don't use another systems like Windows to development. Think that almost all servers in the world are Linux servers, so when you try to deploy that application it will be easier if you have developed that on a Linux or Unix environment too.

Solution 7 - Ruby on-Rails

I am using Ubuntu 11.10- 32 bit with ruby 1.9.3p194, rails 3.2.3, gem 1.8.24. Was receiving the same Javascript error while running "script/rails console".

However doing a "sudo apt-get install nodejs" solved my issue.

Solution 8 - Ruby on-Rails

Fedora users WILL NOT be able to do a simple "yum install nodejs" due to serious naming and file placement conflicts that prevent this package from even being available through the Fedora repositories.

There is apparently at least one alternate repository available with an alternate build that may work, but that's two too many "alternates" for me to be willing to use it-- I'm looking for another alternative.

Solution 9 - Ruby on-Rails

Try installing NodeJS and try again.

https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

NodeJS should be able to solve this issue. You could also factor the version

Solution 10 - Ruby on-Rails

I had the same problem on a staging server. I had no issues running rake tasks on my local development machine, but deploying to the staging server failed with the "Could not find a JavaScript runtime" error message while trying to run the assets:precompile rake task.

Of course, therubyracer and execjs were in my Gemfile, and I was using the latest versions. My Gemfile.lock files matched, and I further verified versions by running bundle show.

After searching around on Google, I ended up deleting all of my gems and reinstalling them which fixed the problem. I still don't know what the root cause was, but maybe this will help you.

Here's what my environment looks like, BTW:

Ubuntu 10.04.3 LTS
rbenv
Ruby 1.9.2-p290
bundler-1.0.21
execjs-1.3.0
therubyracer-0.9.9

Solution 11 - Ruby on-Rails

I had the same problem. Adding the gems 'execjs' and 'therubyracer' not work for me. apt-get install nodejs - also dosn't works. I'm using 64bit ubuntu 10.04.

But it helped me the following:

  1. I created empty folder (for example "java").

  2. From the terminal in folder that I created I do:

    $ git clone git://github.com/ry/node.git $ cd node $ ./configure $ make $ sudo make install

After that I run "bundle install" as usual (from folder with ruby&rails project). And the problem was resolved. Ruby did not have to reinstall.

Solution 12 - Ruby on-Rails

I had this occur to me on my Windows machine, turns out the problem was quite different. I had accidentally removed some paths from my %PATH% variable. Simply restarting the command prompt solved it. It seems as though there was a JS runtime in one of those missing paths.

Solution 13 - Ruby on-Rails

I have pulled my hair out with this error a few time. I have managed to make it sometime disappear by restarting Apache/Nginx.

So I fixed it the same way as above, by adding the following to the GEM file:

gem 'execjs'
gem 'therubyracer', :platforms => :ruby

and then I DELETED my gemfile.lock file and then reran "bundle install". I found only then did "bundle install" actually install the correct libraries etc.

Solution 14 - Ruby on-Rails

On Ubuntu, I had to sudo apt-get update and then the nodejs install worked.

Solution 15 - Ruby on-Rails

when i generate rails g controller i got the same error. After that when do the following changes on Gemfile(in rails 4) everything went smooth.The changes i made was

gem 'execjs'
gem 'therubyracer', "0.11.4"
After that i can able to run the server and able to do all basic operations on the application.

Solution 16 - Ruby on-Rails

add in your gemfile which is in the folder you have created: gem 'execjs' gem 'therubyracer'

Solution 17 - Ruby on-Rails

In my case running the bundle command did the trick. I trust they find each other then.

Solution 18 - Ruby on-Rails

I had this problem when using RubyMine (6.3.3). One day I tried to run my code, but it didn't work and complained about no JavaScript runtime found. I was able to run rails s though. The fix for me was creating a new Run configuration. Seems really bizarre that the Run configuration would become corrupt.

Solution 19 - Ruby on-Rails

For mac, install node with

brew install node

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionsteve98177View Question on Stackoverflow
Solution 1 - Ruby on-RailsPaul WilliamsView Answer on Stackoverflow
Solution 2 - Ruby on-RailsTiagoView Answer on Stackoverflow
Solution 3 - Ruby on-RailsAbramView Answer on Stackoverflow
Solution 4 - Ruby on-RailsSanthoshView Answer on Stackoverflow
Solution 5 - Ruby on-RailsRamiz RajaView Answer on Stackoverflow
Solution 6 - Ruby on-RailsJulian Arango LópezView Answer on Stackoverflow
Solution 7 - Ruby on-RailsVibin B. NairView Answer on Stackoverflow
Solution 8 - Ruby on-RailsMatt HeckView Answer on Stackoverflow
Solution 9 - Ruby on-RailsKent AguilarView Answer on Stackoverflow
Solution 10 - Ruby on-RailsTheSpendView Answer on Stackoverflow
Solution 11 - Ruby on-RailsGalinaView Answer on Stackoverflow
Solution 12 - Ruby on-RailsGodwinView Answer on Stackoverflow
Solution 13 - Ruby on-RailsLorneCurrieView Answer on Stackoverflow
Solution 14 - Ruby on-Railskilombo1View Answer on Stackoverflow
Solution 15 - Ruby on-RailsMadhan AyyasamyView Answer on Stackoverflow
Solution 16 - Ruby on-RailsVishnu HarishView Answer on Stackoverflow
Solution 17 - Ruby on-RailsjavabeangrinderView Answer on Stackoverflow
Solution 18 - Ruby on-RailsJackView Answer on Stackoverflow
Solution 19 - Ruby on-RailstakasoftView Answer on Stackoverflow