15

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

我将 'therubyracer' gem 添加到我的 Gemfile 中,然后 '$ 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
4

6 回答 6

19

当我在一月份开始研究 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 应用程序上工作,它们都gem 'therubyracer', platform: :ruby已经在刚刚注释掉的 Gemfile 中。

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

于 2013-05-30T21:31:11.590 回答
8

找不到 JavaScript 运行时。我想你的 G​​emfile 中没有一个。尝试编辑您的 Gemfile 并添加

gem 'therubyracer'

然后运行

$ bundle install
于 2013-05-30T21:30:22.717 回答
1

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

将此添加到您的 Gemfile 中:

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

您还可以检查其他选项,例如 Node.js 用于生产,但对于开发来说就足够了。

于 2013-05-30T21:31:17.723 回答
0

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

rails server   

或者

rails s
于 2014-01-03T00:23:14.003 回答
0
  • 可能的问题:我的 Rails 服务器没有在 Windows 7 上启动,因为 ExecJS 无法检测到 Javascript 运行时,即使我安装了 NodeJS。
  • 我的机器上的原因: NodeJS 目录是环境的一部分,但被引号包围(例如。[...];"C:\Program Files\nodejs\";[...])。这导致whereExecJS 无法理解路径条目,最终找不到 node.js 可执行文件。
  • 解决方法:见下...

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

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

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

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

  • 删除 Gemfile.lock 并调用bundle install以全新安装 gemfile

  • 开始 Railsrails server

于 2013-10-11T06:30:41.623 回答
0

你应该打开/home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/runtimes.rb并去排队51autodetect查看正在寻找什么资源。这似乎不见了。

您可能有一个未加载的依赖项。rbenv最好的策略是使用or创建一个新的 ruby​​ gem 环境rvm,然后再次捆绑。应该修复它。

于 2013-05-30T21:33:13.110 回答