我收到这个错误:
耙子流产!找不到JavaScript运行时 . 请参阅https://github.com/sstephenson/execjs,
我已经花了更多时间搜索谷歌然后我愿意承认 . 我相信这是一个execJs的bug .
从所有帖子中,这是rails 3.1的一个非常常见的问题 . 现在需要一个js运行时现在标准的宝石如coffee-script和sass .
大多数情况通过将gems'execjs'和'therubyracer'添加到应用程序Gemfile,然后运行'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无法找到'therubyracer'的问题 . 这是Gemfile(和bundle install说好):
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,我可以运行rake而不会出现错误:
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',为什么不能运行.rb找到它? execJs坏了吗?
在这里'therubyracer':
/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.9.9
我怎样才能解决这个问题?
18 回答
Ubuntu用户:
我遇到了同样的问题,我通过在独立于gem的系统上安装
nodejs
来修复它 .在ubuntu上:
sudo apt-get install nodejs
我使用64位ubuntu 11.10
更新:来自@Galina 's answer below I'猜测是否需要最新版本的nodejs,所以@ steve98177你在redhat(或CentOS)盒子上的最佳选择是从源代码安装为@Galina,但是你不能"make/install"这个盒子?,我建议你尝试安装一个fedora rpm(远射)https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager或找到另一个RH / CentOs盒子(你可以'make')并创建你自己的rpm并安装在原装RH盒子上(如果RH上的旧glibc播放)尼斯) .
这里真正的问题(恕我直言)是安装在ruby环境之外依赖于已安装软件包的Gems,在安装之前有没有办法知道?宝石或捆绑商的RFI?
CentOS / RedHat用户:
在你的gemfile中添加:
有关详细信息:ExecJS and could not find a JavaScript runtime
这是解决问题所需的链接(安装nodejs):https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
创建空项目时,此行在Gemfile中进行注释 . 只需取消注释即可捆绑!
我在ubuntu 12.04上遇到了类似的问题 . Installing Node.js修复了它 .
我正在使用Ubuntu 11.10- 32位与ruby 1.9.3p194,rails 3.2.3,gem 1.8.24 . 运行“script / rails console”时收到相同的Javascript错误 .
但是,做一个“sudo apt-get install nodejs”解决了我的问题 .
由于严重的命名和文件放置冲突导致无法通过Fedora存储库提供此程序包,Fedora用户将无法执行简单的“yum install nodejs” .
显然至少有一个备用存储库可以使用备用版本,但是这两个太多“替代”让我愿意使用它 - 我正在寻找另一种选择 .
尝试安装NodeJS并重试 .
https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
我在登台服务器上遇到了同样的问题 . 我在本地开发计算机上运行rake任务没有问题,但在尝试运行 assets:precompile rake任务时,部署到登台服务器失败并显示 "Could not find a JavaScript runtime" 错误消息 .
当然, therubyracer 和 execjs 在我的Gemfile中,我使用的是最新版本 . 我的Gemfile.lock文件匹配,我通过运行 bundle show 进一步验证了版本 .
在Google上搜索之后,我最终解决了这个问题.1779479_我仍然不知道根本原因是什么,但也许这会对你有所帮助 .
以下是我的环境,BTW:
我有同样的问题 . 添加宝石'execjs'和'therubyracer'对我不起作用 . apt-get install nodejs - 也不能正常工作 . 我使用64位ubuntu 10.04 .
但它帮助了我以下内容:1 . 我创建了空文件夹(例如“java”) . 2.从文件夹中的终端我创造的我做的:
之后我像往常一样运行“bundle install”(来自ruby&rails项目的文件夹) . 问题得到了解决 . Ruby没有必要重新安装 .
我在我的Windows机器上发生了这种情况,事实证明问题是完全不同的 . 我不小心从我的
%PATH%
变量中删除了一些路径 . 只需重新启动命令提示即可解决问题 . 似乎在其中一个缺少的路径中有一个JS运行时 .我已经把这个错误拉了一下头几次 . 通过重启Apache / Nginx,我已经设法让它消失了 .
所以我通过将以下内容添加到GEM文件中,以与上面相同的方式修复它:
然后我删除了我的gemfile.lock文件,然后重新“捆绑安装” . 我发现只有“捆绑安装”实际上安装了正确的库等 .
在Ubuntu上,我不得不
sudo apt-get update
然后nodejs安装工作 .当我生成rails g控制器时我得到了同样的错误 . 之后,当对Gemfile进行以下更改时(在rails 4中)一切顺利 . 我所做的更改是
宝石'execjs'
宝石'therubyracer',"0.11.4"
之后,我可以运行服务器,并能够在应用程序上执行所有基本操作 .
如果你在ubuntu
$ sudo apt-get install nodejs
尽量不要使用像Windows这样的其他系统进行开发 . 认为世界上几乎所有的服务器都是Linux服务器,所以当你尝试部署该应用程序时,如果你在Linux或Unix环境中开发它也会更容易 .
添加你创建的文件夹中的gemfile:gem'execjs'gem'therubyracer'
在我的情况下运行
bundle
命令就可以了 . 我相信他们会找到对方 .使用RubyMine(6.3.3)时遇到了这个问题 . 有一天,我试图运行我的代码,但它没有工作,抱怨没有找到JavaScript运行时 . 我能够运行
rails s
. 我的修复是创建一个新的运行配置 . 看起来很奇怪Run运行配置会变得腐败 .