Rails的服务器无法启动 – >无法find一个JavaScript的运行时间

我在文件夹“问题”中创build了一个新的rails应用程序,当我想“ruby s”时,出现错误。 任何帮助都感激不尽

[thiago@netbox issues]$ rails s /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs.rb:5:in `<module:ExecJS>' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs.rb:4:in `<top (required)>' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `<top (required)>' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `<top (required)>' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `require' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `<top (required)>' from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require' from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require' from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each' from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require' from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each' from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require' from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/bundler-1.3.5/lib/bundler.rb:132:in `require' from /home/thiago/Documents/wdi/rails_practice/issues/config/application.rb:7:in `<top (required)>' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:53:in `require' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:53:in `block in <top (required)>' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap' from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>' 

我在我的Gemfile中添加了'therubyracer'gem,然后'$ bundle install'Works!

 Gemfile source 'https://rubygems.org' gem 'rails', '3.2.8' gem 'sqlite3' group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' gem 'uglifier', '>= 1.0.3' end gem 'jquery-rails' gem 'therubyracer' # added 

Solutions Collecting From Web of "Rails的服务器无法启动 – >无法find一个JavaScript的运行时间"

我在一月份开始使用Rails的时候,对Windows和Ubuntu都有同样的错误。 错误是非常简单的。 您需要启动服务器的JavaScript运行时环境。

有很多解决方案。 我在Ubuntu上使用的是安装NodeJS。

在Ubuntu上,您可以运行类似于以下内容来安装NodeJS:

 sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get -y update sudo apt-get -y install nodejs 

这些是我用来做的命令,因为它会安装最新的稳定版本的NodeJS,但是你可以运行sudo apt-get -y install nodejs并且没问题。

在Windows上,我使用的答案,也可能是其他的,是编辑你的Gemfile来安装therubyracer。 我现在正在使用Rails 4.0 RC1应用程序,他们都已经在Gemfile中创建了gem'therubyracer gem 'therubyracer', platform: :ruby

如果你在Windows上运行,你可以在你的Gemfile中添加gem 'therubyracer' ,这会让你运行我敢打赌。 然后运行bundle install

JavaScript运行时无法找到。 我想你的Gemfile中没有一个。 尝试编辑你的Gemfile并添加

 gem 'therubyracer' 

然后运行

 $ bundle install 

你需要安装一个javascript解释器:

将此添加到您的Gemfile中:

 gem "libv8", ">= 3.11.8" gem "therubyracer", ">= 0.11.0", :group => :assets, :platform => :ruby, :require => "v8" 

你也可以检查其他选项,如Node.js的生产,但对于开发,这将是足够的。

您应该打开/home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/runtimes.rb并转到第51行。 看看什么资源autodetect正在寻找。 这似乎是失踪。

您可能有一个不加载的依赖项。 最好的策略是用rbenvrvm创建一个新的ruby gem环境,然后重新绑定。 应该修复它。

  • 可能的问题:我的Rails-server没有在Windows 7上启动,因为ExecJS无法检测到Javascript运行时,即使我已经安装了NodeJS。
  • 在我的机器上的原因: NodeJS目录是环境的一部分,但被引用(如[...];"C:\Program Files\nodejs\";[...] )所[...];"C:\Program Files\nodejs\";[...] 。 这导致在where和ExecJS无法理解路径条目,并最终没有找到node.js可执行文件。
  • 解决方案:见下面…

为了让我的Rails-server在Windows(7 64位)上启动,我

  • 将NodeJS安装包含空格的目录(例如在C:\development\nodejs\ )中…因为如果相应条目被引用包围,其中(Windows版本)无法在PATH中找到可执行文件分数

  • 确保where node返回节点可执行文件(例如, C:\development\nodejs\node.exe ),我刚刚安装(如果哪里找不到NodeJS,execJS可能也找不到它)如果where node返回一个错误,请检查您的PATH变量,您可能需要将NodeJS的条目移到前面,而不要使用引号

  • 通过将相应的行更改为gem 'therubyracer', :platforms => :rubygem 'therubyracer', :platforms => :ruby从Gemfile中排除therubyracer,这将导致therubyracer安装在Linux /生产环境中,而不是在本地Windows环境

  • 删除Gemfile.lock并调用bundle install为了有一个干净的gemfiles安装

  • 开始与rails server Rails

它不会允许你在任何目录内启动服务器。 只需进入根目录并键入

 rails server 

要么

 rails s