可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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?
回答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
回答2:
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.
回答3:
In your Gem file, write
gem \'execjs\'
gem \'therubyracer\'
and then run
bundle install
Everything works fine for me :)
回答4:
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.
回答5:
Adding the following gem to my Gemfile solved the issue:
gem \'therubyracer\'
Then bundle your new dependencies:
$ bundle install
回答6:
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.
回答7:
Add following gems in your gem file
gem \'therubyracer\'
gem \'execjs\'
and run
bundle install
you are done :)
回答8:
I used to add the Ruby Racer to the Gem file to fix it. But hey, Node.js works!
回答9:
For amazon linux(AMI):
sudo yum install nodejs npm --enablerepo=epel
回答10:
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.
回答11:
FYI, this fixed the problem for me... it\'s a pathing problem:
http://forums.freebsd.org/showthread.php?t=35539
回答12:
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.
回答13:
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.
回答14:
In your gem file
Uncomment this line.
19 # gem \'therubyracer\', platforms: :ruby
And run
bundle install
You are ready to work. :)