ExecJS并找不到JavaScript运行时
我正在尝试使用Mongoid / Devise Rails 3.1模板 ( Mongoid和Devise ),并且我一直收到一个错误,指出ExecJS找不到JavaScript运行时。 当我没有安装任何东西的时候就够了,但是我试过安装Node.js , Mustang和Ruby Racer ,但是没有任何工作。
我找不到JavaScript运行时。 请参阅sstephenson / ExecJS (GitHub)以获取可用运行时的列表( ExecJS::RuntimeUnavailable
)。
我需要做些什么才能做到这一点?
Ubuntu用户
我在Ubuntu 11.04上,有类似的问题。 安装Node.js修复它。
从Ubuntu 13.04 x64开始,你只需要运行:
sudo apt-get install nodejs
这将解决问题。
CentOS / RedHat用户
sudo yum install nodejs
只需在您的gem文件中添加ExecJS和Ruby Racer ,然后运行bundle install
。
gem 'execjs' gem 'therubyracer'
一切都应该罚款之后。
在你的Gem文件中,写
gem 'execjs' gem 'therubyracer'
然后运行
bundle install
一切工作正常我:)
我有一个类似的问题:我的Rails 3.1应用程序在Windows上工作正常,但在Linux上运行时遇到与OP相同的错误。 在两个平台上为我工作的修复程序是将以下内容添加到我的Gemfile
:
gem 'therubyracer', :platforms => :ruby
诀窍是知道:platforms => :ruby
实际上意味着只能使用“C Ruby(MRI)或Rubinius,而不是Windows”。
其他可能的值包括:platforms
手册页 。
仅供参考:Windows有一个内置的JavaScript引擎, execjs
可以find。 在Linux上没有一个内置的,虽然有几个可用的,可以安装。 therubyracer
是其中之一。 其他人列在execjs
README.md中 。
添加下面的gem到我的Gemfile解决了这个问题:
gem 'therubyracer'
然后捆绑您的新的依赖关系:
$ bundle install
另一种方法是只包含没有包含你没有的东西的gem组。
那么:
bundle install --without assets
你根本不需要修改Gemfile,当然你并不是在做资产链的东西 – 这通常适用于非开发环境。 Bundle会记住.bundle / config文件中的“–without”设置。
在您的gem文件中添加以下gem
gem 'therubyracer' gem 'execjs'
并运行
bundle install
你完成了:)
我曾经将Ruby Racer添加到Gem文件来修复它。 但是,嘿, Node.js的作品!
不要使用RubyRacer,因为它在内存上不好。 按照某些人的build议安装Node.js是个好主意。
ExecJs Library可用的可用运行时的列表也logging了Node.js的使用
https://github.com/sstephenson/execjs \
所以,Node.js不是一个矫枉过正的问题,比使用rubyracer更好的解决scheme。
仅供参考,这解决了我的问题…这是一个path问题: http : //forums.freebsd.org/showthread.php? t= 35539
对于亚马逊Linux(AMI):
sudo yum install nodejs npm --enablerepo=epel
我有这个相同的错误,但只在我的登台服务器,而不是我的生产环境。 nodejs已经安装在两个环境中。
通过input:
which node
我发现node命令位于:/ usr / bin / node中,但是:/ usr / local / bin / node正在执行。
在创build符号链接后,即:
sudo ln -s /usr/local/bin/node /usr/bin/node
该应用程序然后在分期工作。
没有麻烦没有大惊小怪。
当我开始使用rbenv与Ruby 1.9.3,我的系统ruby是1.8.7时,我开始得到这个问题。 gem是安装在两个地方,但由于某种原因,轨道脚本没有拿起它。 但是,将“execjs”和“therubyracer”添加到Gemfile中的确有用。
在你的gem文件中取消注释这一行。
19#gem'therubyracer',平台::ruby
并运行捆绑安装
你已经准备好工作了。 🙂