ExecJS and could not find a JavaScript runtime

Ruby on-Rails-3.1ExecjsJavascript

Ruby on-Rails-3.1 Problem Overview


I'm trying to use the Mongoid / Devise Rails 3.1 template (Mongoid and Devise), and I keep getting an error stating ExecJS cannot find a JavaScript runtime. Fair enough when I didn't have any installed, but I've tried installing Node.js, Mustang and the Ruby Racer, but nothing is working.

I could not find a JavaScript runtime. See sstephenson/ExecJS (GitHub) for a list of available runtimes (ExecJS::RuntimeUnavailable).

What do I need to do to get this working?

Ruby on-Rails-3.1 Solutions


Solution 1 - Ruby on-Rails-3.1

Ubuntu Users

I'm on Ubuntu 11.04 and had similar issues. Installing Node.js fixed it.

As of Ubuntu 13.04 x64 you only need to run:

sudo apt-get install nodejs

This will solve the problem.


CentOS/RedHat Users

sudo yum install nodejs

Solution 2 - Ruby on-Rails-3.1

Just add ExecJS and the Ruby Racer in your gem file and run bundle install after.

gem 'execjs'

gem 'therubyracer'

Everything should be fine after.

Solution 3 - Ruby on-Rails-3.1

In your Gem file, write

gem 'execjs'
gem 'therubyracer'

and then run

bundle install

Everything works fine for me :)

Solution 4 - Ruby on-Rails-3.1

I had a similar problem: my Rails 3.1 app worked fine on Windows but got the same error as the OP when running on Linux. The fix that worked for me on both platforms was to add the following to my Gemfile:

gem 'therubyracer', :platforms => :ruby

The trick is knowing that :platforms => :ruby actually means only use this gem with "C Ruby (MRI) or Rubinius, but NOT Windows."

Other possible values for :platforms are described in the bundler man page.

FYI: Windows has a builtin JavaScript engine which execjs can locate. On Linux there is not a builtin although there are several available that one can install. therubyracer is one of them. Others are listed in the execjs README.md.

Solution 5 - Ruby on-Rails-3.1

Adding the following gem to my Gemfile solved the issue:

gem 'therubyracer'

Then bundle your new dependencies:

$ bundle install

Solution 6 - Ruby on-Rails-3.1

An alternative way is to just bundle without the gem group that contains the things you don't have.

So do:

bundle install --without assets

you don't have to modify the Gemfile at all, providing of course you are not doing asset chain stuff - which usually applies in non-development environments. Bundle will remember your '--without' setting in the .bundle/config file.

Solution 7 - Ruby on-Rails-3.1

Add following gems in your gem file

gem 'therubyracer'
gem 'execjs'

and run

bundle install

you are done :)

Solution 8 - Ruby on-Rails-3.1

For amazon linux(AMI):

sudo yum install nodejs npm --enablerepo=epel

Solution 9 - Ruby on-Rails-3.1

I had this same error but only on my staging server not my production environment. nodejs was already installed on both environments.

By typing:

which node

I found out that the node command was located in: /usr/bin/node on production but: /usr/local/bin/node in staging.

After creating a symlink on staging i.e. :

sudo ln -s /usr/local/bin/node /usr/bin/node

the application then worked in staging.

No muss no fuss.

Solution 10 - Ruby on-Rails-3.1

I used to add the Ruby Racer to the Gem file to fix it. But hey, Node.js works!

Solution 11 - Ruby on-Rails-3.1

Don't Use RubyRacer as it is bad on memory. Installing Node.js as suggested by some people here is a better idea.

This list of available runtimes that can be used by ExecJs Library also documents the use of Node.js

https://github.com/sstephenson/execjs

So, Node.js is not an overkill, and much better solution than using the RubyRacer.

Solution 12 - Ruby on-Rails-3.1

FYI, this fixed the problem for me... it's a pathing problem: http://forums.freebsd.org/showthread.php?t=35539

Solution 13 - Ruby on-Rails-3.1

I installed node via nvm and encountered this issue when deploying with Capistrano. Capistrano didn't load nvm automatically because it runs non-interactively.

To fix, simply move the lines that nvm adds to your ~/.bashrc up to the top. The file will then look something like this:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Solution 14 - Ruby on-Rails-3.1

I started getting this problem when I started using rbenv with Ruby 1.9.3 where as my system ruby is 1.8.7. The gem is installed in both places but for some reason the rails script didn't pick it up. But adding the "execjs" and "therubyracer" to the Gemfile did the trick.

Solution 15 - Ruby on-Rails-3.1

In your gem file Uncomment this line.

19 # gem 'therubyracer', platforms: :ruby

And run bundle install

You are ready to work. :)

Solution 16 - Ruby on-Rails-3.1

Attempting to debug in RubyMine using Ubuntu 18.04, Ruby 2.6.*, Rails 5, & RubyMine 2019.1.1, I ran into the same issue.

To resolve the issue, I uncommented the mini_racer line from my Gemfile and then ran bundle:

# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby

Change to:

# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :ruby

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
QuestionsrboisvertView Question on Stackoverflow
Solution 1 - Ruby on-Rails-3.1eldewallView Answer on Stackoverflow
Solution 2 - Ruby on-Rails-3.1vincent jacquelView Answer on Stackoverflow
Solution 3 - Ruby on-Rails-3.1manish nautiyalView Answer on Stackoverflow
Solution 4 - Ruby on-Rails-3.1jwfearnView Answer on Stackoverflow
Solution 5 - Ruby on-Rails-3.1JDutilView Answer on Stackoverflow
Solution 6 - Ruby on-Rails-3.1moschopsView Answer on Stackoverflow
Solution 7 - Ruby on-Rails-3.1Ramiz RajaView Answer on Stackoverflow
Solution 8 - Ruby on-Rails-3.1William HuView Answer on Stackoverflow
Solution 9 - Ruby on-Rails-3.1SeanView Answer on Stackoverflow
Solution 10 - Ruby on-Rails-3.1Richard ZhangView Answer on Stackoverflow
Solution 11 - Ruby on-Rails-3.1NerveView Answer on Stackoverflow
Solution 12 - Ruby on-Rails-3.1MichelV69View Answer on Stackoverflow
Solution 13 - Ruby on-Rails-3.1Kevin CooperView Answer on Stackoverflow
Solution 14 - Ruby on-Rails-3.1arangamaniView Answer on Stackoverflow
Solution 15 - Ruby on-Rails-3.1Sandeep RoniyaarView Answer on Stackoverflow
Solution 16 - Ruby on-Rails-3.1CommandZView Answer on Stackoverflow