execJs:'找不到JavaScript运行时',但execjs和therubyracer在Gemfile中

我得到这个错误:

耙中止! 找不到JavaScript运行时。 请参阅https://github.com/sstephenson/execjs ,

我已经花了更多的时间search谷歌,我愿意承认。 我相信这是一个execJs错误。

从所有的post来看,这是一个非常普遍的问题,与轨道3.1。 现在需要一个js运行时,现在是像coffee-script和sass这样的标准gems。

这些情况大部分都是通过在应用程序Gemfile中添加gem execjs和therubyracer来解决的,然后运行“bundle update”和/或“bundle install”。 但不适合我

我想我很幸运。 我在老版本的Redhat Linux 4(2.6.9-101.ELsmp)上运行rails 3.1.3 / ruby​​ 1.9,gcc是3​​.4.6。

其他报告的修复程序没有帮助,我无法安装“nodejs”,“johnson”或“mustang”,其他运行时execJs应该定位和使用。 他们不会在我的系统上安装/安装。

我需要解决导致execJs无法find“therubyracer”的问题。 这里是Gemfile(和捆绑安装说好):

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 

这是一个痕迹:

 ~/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>' 

开发日志中没有什么有趣的东西。

这里是execjs目录:

 /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 

我也试过execjs-1.2.13。 同样的问题。

如果我评论下面的execjs.rb,我可以运行耙没有错误:

 require "execjs/module" require "execjs/runtimes" module ExecJS self.runtime #||= Runtimes.autodetect end 

但是,我没有得到一个运行时间。

我可以看到错误文本来自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 

所以问题是,既然我已经安装了“therubyracer”,为什么runtimes.rb找不到呢? execJs坏了吗?

这里是'therubyracer':

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

我怎样才能解决这个问题?

Ubuntu用户:

我有同样的问题,我通过在独立于gem的系统上安装nodejs来修复它。

在ubuntu上: sudo apt-get install nodejs

我正在使用64位的Ubuntu 11.10

更新:从@Galina的答案下面我猜,最新版本的nodejs是必需的,所以@ steve98177你最好的select在红帽(或CentOS)框是从源代码安装@Galina做,但作为你不能在这个盒子上“制作/安装”,我build议你尝试安装一个Fedora rpm(远景) https://github.com/joyent/node/wiki/Installing-Node.js-via-package-或者find另一个RH / CentOs盒子(你可以'制作')并创build你自己的rpm并安装在原来的RH盒子上(如果RH上的老的glibc播放的很好)。

真正的问题在这里(恕我直言)是安装Gems依赖于已安装的软件包在ruby环境以外,有没有安装前知道的方式? gem或捆绑商的RFI?


CentOS / RedHat用户:

 sudo yum install nodejs 

在你的gemfile中添加:

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

有关更多详细信息: ExecJS并找不到JavaScript运行时

这是我需要修复问题的链接(安装nodejs): https : //github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

当你创build一个空的项目时,这行是在Gemfile中注释的。 只是取消注释和捆绑!

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

只需将上面的gem列表添加到您的gemfile ….并运行rails

我有类似的问题在Ubuntu 12.04。 安装Node.js修复它。

当您启动任何新的空项目时,下面的行在Gemfile中注释。 只需取消注释并运行软件包安装

gem'therubyracer',:平台=>:ruby

我使用Ubuntu 11.10- 32位ruby1.9.3p194,导轨3.2.3,gem1.8.24。 在运行“script / rails console”时收到相同的Javascript错误。

但是做一个“sudo apt-get install nodejs”解决了我的问题。

由于严重的命名和文件放置冲突,Fedora用户将无法执行简单的“yum install nodejs”操作,从而导致该软件包无法通过Fedora存储库使用。

显然,至less有一个替代版本库可以使用替代版本,但是这可能是两个太多的替代版本,我愿意使用它 – 我正在寻找另一种替代版本。

我在登台服务器上遇到同样的问题。 我没有在本地开发机器上运行rake任务的问题,但是在试图运行assets:precompile rake任务 ,部署到登台服务器失败,出现“Could not find a JavaScript runtime”错误消息。

当然, therubyracerexecjs在我的Gemfile中,而且我正在使用最新版本。 我的Gemfile.lock文件相匹配,我通过运行bundle show进一步validation版本。

在Google上search后,我最终删除了所有的gem,并重新安装了解决问题的工具。 我仍然不知道根本原因是什么,但也许这会帮助你。

这是我的环境,看起来像BTW:

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

我有同样的问题。 添加gem'execjs'和'therubyracer'不适合我。 apt-get install nodejs – 也dosn't工程。 我正在使用64位的Ubuntu的10.04。

但它帮助了我以下几点:1.我创build了空文件夹(例如“java”)。 2.从我创build的文件夹中的terminal执行:

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

之后,像往常一样运行“捆绑安装”(从ruby和rails项目文件夹)。 问题解决了。 Ruby不必重新安装。

我已经把我的头发拉出了几次这个错误。 我设法通过重新启动Apache / Nginx来让它消失。

所以我用与上面相同的方法修改它,在GEM文件中添加以下内容:

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

然后我删除了我的gemfile.lock文件,然后重新“捆绑安装”。 我发现只有这样做“捆绑安装”实际上安装正确的库等

我在我的Windows机器上发生了这种情况,事实certificate这个问题是完全不同的。 我不小心从%PATH%variables中删除了一些path。 只需重新启动命令提示符解决了它。 似乎有一个JS运行时在其中一个缺less的path。

在Ubuntu上,我不得不sudo apt-get update ,然后nodejs安装工作。

当我生成轨道控制器我得到了同样的错误。 之后,当在Gemfile上进行以下更改(在rails 4中),一切都很顺利。我所做的更改是

gem'execjs'
gem'therubyracer',“0.11.4”
之后,我可以运行服务器,并能够在应用程序上执行所有的基本操作。

添加你创build的文件夹中的gemfile:gem'execjs'gem'therubyracer'

在我的情况下运行bundle命令做了伎俩。 我相信他们那时find对方。

使用RubyMine(6.3.3)时,我遇到了这个问题。 有一天,我试图运行我的代码,但它没有工作,抱怨没有发现JavaScript运行时。 尽pipe我能够运行rails s 。 对我来说修复是创build一个新的运行configuration。 似乎真的很奇怪,运行configuration将变得腐败。

如果你在Ubuntu $ sudo apt-get install nodejs

尽量不要使用Windows等开发系统。 认为世界上几乎所有的服务器都是Linux服务器,所以当你尝试部署这个应用时,如果你在Linux或者Unix环境下开发的话,这将会更容易。