Rails服务器无法启动 - >找不到JavaScript运行时

时间:2013-05-30 21:21:53

标签: ruby-on-rails ruby linux

我在文件夹'问题'中创建了一个新的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'工作!

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

6 个答案:

答案 0 :(得分:19)

当我在1月开始使用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', platform: :ruby

如果您在Windows上运行,那么您可以在Gemfile中添加gem 'therubyracer',这样可以让您继续运行我敢打赌。然后运行bundle install

答案 1 :(得分:8)

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

gem 'therubyracer'

然后运行

$ bundle install

答案 2 :(得分:1)

您需要安装javascript Interpreter:

将此添加到您的Gemfile:

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

你也可以检查Node.js等其他选项进行制作,但是对于开发来说就足够了。

答案 3 :(得分:0)

您应该打开/home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/runtimes.rb并转到第51行。查看autodetect正在寻找的资源。这似乎不见了。

您可能有一个未加载的依赖项。最佳策略是使用rbenvrvm创建一个新的红宝石宝石环境,然后再捆绑。应该解决它。

答案 4 :(得分:0)

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

要让我的Rails服务器在Windows(7 64位)上启动,我

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

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

  • 通过将相应的行更改为,从Gemfile中排除了therubyracer gem 'therubyracer', :platforms => :ruby (如前所述)这将导致therubyracer安装在Linux /生产环境中,但不会安装在本地Windows环境中

  • 删除了Gemfile.lock并调用bundle install以便彻底安装gemfiles

  • 使用rails server

  • 启动了Rails

答案 5 :(得分:0)

它不允许您在任何目录中启动服务器。只需转到根目录并输入

即可
rails server   

rails s