首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >execJs:“无法找到JavaScript运行时”,但execjs和therubyracer在Gemfile中

execJs:“无法找到JavaScript运行时”,但execjs和therubyracer在Gemfile中
EN

Stack Overflow用户
提问于 2012-02-08 22:13:51
回答 19查看 164.5K关注 0票数 196

我得到了一个错误:

rake失败了!找不到JavaScript运行时。见https://github.com/sstephenson/execjs

我已经花了更多的时间搜索谷歌,然后我愿意承认。我相信这是个执政官的错误。

从所有帖子来看,这是rails 3.1中一个非常常见的问题。现在,像咖啡脚本和sass这样的标准宝石需要js运行时。

大多数情况都是通过在应用程序Gemfile中添加gems 'execjs‘和'therubyracer’,然后运行'bundle update‘和/或'bundle install’来解决的。但对我来说不是。

我想我很幸运。我在Redhat Linux 4的旧版本(2.6.9-101.ELsmp)上运行rails 3.1.3/ruby1.9,gcc是3.4.6。

其他报告的修复没有帮助,我无法安装'nodejs','johnson',或'mustang',其他运行时执行部分应该定位和使用。他们不会在我的系统上安装。

我需要解决导致执行人员找不到'therubyracer‘的问题。下面是Gemfile (包安装说明Ok):

代码语言:javascript
复制
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

这里有一条线索:

代码语言:javascript
复制
~/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>'

开发日志中没有什么有趣的内容。

下面是执行人员的dir:

代码语言:javascript
复制
/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  

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

如果我在下面评论execjs.rb,我可以运行rake,而不会出现错误:

代码语言:javascript
复制
require "execjs/module"
require "execjs/runtimes"

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

但那样我就没时间运行了。

在runtimes.rb中,我可以看到错误文本的来源:

代码语言:javascript
复制
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找不到它呢?执政官坏了吗?

在这里,它是“赛比亚人”:

代码语言:javascript
复制
/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.9.9

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

EN

回答 19

Stack Overflow用户

发布于 2012-02-17 18:16:55

Ubuntu用户:

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

关于ubuntu:sudo apt-get install nodejs

我用的是64位的ubuntu 11.10

更新:从@Galina下面的回答中,我猜需要最新版本的nodejs,所以@steve98177你在红帽(或CentOS)框上最好的选择是像@Galina那样从源代码安装,但是由于您不能在这个盒子上“制造/安装”?我建议您尝试安装一个fedora rpm (长距离) https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager,或者找到另一个RH/CentOs盒(您可以‘制造’)并创建自己的rpm并安装在原始的RH盒上(如果旧的glibc在RH上播放的话)。

这里真正的问题(IMHO)是安装依赖于在ruby环境之外安装的包的Gems,在安装之前有什么方法知道吗?Gems或bundler的RFI?

CentOS/RedHat用户:

代码语言:javascript
复制
sudo yum install nodejs
票数 356
EN

Stack Overflow用户

发布于 2012-02-09 13:11:50

在您的宝石文件中添加:

代码语言:javascript
复制
gem 'execjs'
gem 'therubyracer', :platforms => :ruby

有关更多详细信息:ExecJS and could not find a JavaScript runtime

票数 109
EN

Stack Overflow用户

发布于 2012-04-03 20:20:44

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9202324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档