UPDATE: Colin关于删除行/=require_树的建议.已经解决了这个问题.

我已经浪费了超过两天的时间,试图按照每个建议go 解决我的问题.我试图在windows机器上学习http://ruby.railstutorial.org本书,但我一生都无法克服以下严重错误.

ExecJS::RuntimeError in Static_pages#home

Showing C:/Users/.../bootcamp-sample-app/app/views/layouts/application.html.erb where line #6 raised:

["ok","(function() {\n\n\n\n}).call(this);\n"]
(in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)
Extracted source (around line #6):

3: <head>
4:   <title><%= full_title(yield(:title)) %></title>
5:   <%= stylesheet_link_tag    "application", media: "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8:   <%= render 'layouts/shim' %>
9: </head>
Rails.root: C:/Users/.../bootcamp-sample-app

Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'
Request

我try 过各种建议,包括在msi上安装nodejs、使用execjs 1.3.0以及其他我已经记不得的东西.这是gem file美元

source 'https://rubygems.org'

gem 'rails', '3.2.8'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'

group :development, :test do
  gem 'sqlite3', '1.3.5'
  gem 'rspec-rails', '2.10.0'
  gem 'guard-rspec', '0.5.5'
  gem 'guard-cucumber'
end

group :development do
  gem 'annotate', '2.5.0'
end


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'coffee-script'
  gem 'uglifier'
end

gem 'jquery-rails', '2.0.2'

gem 'execjs'

# Gems on Linus/Mac
#gem 'therubyracer'


group :test do
  gem 'capybara', '1.1.2'
  gem 'guard-spork', '0.3.2'
  gem 'spork', '0.9.0'
  gem 'factory_girl_rails', '1.4.0'
  gem 'cucumber-rails', '1.2.1', require: false
  gem 'database_cleaner', '0.7.0'


# Test gems on Linux
#  gem 'rb-inotify', '0.8.8'
#  gem 'libnotify', '0.5.9'

# Test gems on Macintosh OS X
#  gem 'selenium-webdriver', '~> 2.22.0'
#  gem 'rb-fsevent', '0.9.1', :require => false
#  gem 'growl', '1.0.3'

# Test gems on Windows
# gem 'rb-fchange', '0.0.5'
# gem 'rb-notifu', '0.0.4'
# gem 'win32console', '1.3.0'
end

group :production do
#  gem 'therubyracer'
  gem 'pg', '0.12.2'
end

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the app server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
#gem 'debugger''

这是sessions.js.coffee美元

# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require bootstrap

application.html.erb

<!DOCTYPE html>
 <html>
 <head>
   <title><%= full_title(yield(:title)) %></title>
   <%= stylesheet_link_tag    "application", media: "all" %>
   <%= javascript_include_tag "application" %>
   <%= csrf_meta_tags %>
   <%= render 'layouts/shim' %>
 </head>
 <body>
 <%= render 'layouts/header' %>
 <div class="container">
   <%= yield %>
   <%= render 'layouts/footer' %>
 </div>
 </body>
 </html>

这是console content美元

Processing by StaticPagesController#home as HTML
  Rendered static_pages/home.html.erb within layouts/application (45.0ms)
Completed 500 Internal Server Error in 1136ms

ActionView::Template::Error (["ok","(function() {\n\n\n\n}).call(this);\n"]
  (in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)):
    3: <head>
    4:   <title><%= full_title(yield(:title)) %></title>
    5:   <%= stylesheet_link_tag    "application", media: "all" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8:   <%= render 'layouts/shim' %>
    9: </head>
  app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'


  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (34.0ms)

我已经安装了Devkit,并try 了各种gems,但请建议可以帮助我在windows上开发的更改.我什么都用rubyinstaller.

我错过了什么?

推荐答案

几个月前,我的朋友在try Win 8 RTM上的Rails教程时遇到了这个错误.不确定Windows 7中是否也存在此问题,但这可能会有所帮助.

Options:

1) Removing 100 / Ignoring the issue -如上所述,这条线一开始不应该引起问题.ExecJS与系统上的JavaScript运行时正常工作存在实际问题,删除这一行只是忽略了这一事实.

2) Installing node .js / Running away -许多人似乎最终安装了Node.js,而不是他们系统上已有的JavaScript运行时.虽然这是一个有效的选项,但它也需要额外的软件,只会避免最初的问题,即ExecJS无法与系统上已经存在的JavaScript运行时正常工作.如果系统上现有的JavaScript运行时应该可以工作,为什么不让它工作,而不是安装更多的软件呢?根据ExecJS创建者的说法,Windows中已经内置的运行时实际上是受支持的...

ExecJS允许您从Ruby运行JavaScript代码.它会自动 Select 可用于判断JavaScript程序的最佳运行时,然后将结果作为Ruby对象返回给您.

运行时支持以下功能:

  • therubyracer——嵌入Ruby的谷歌V8
  • therubyrhino——嵌入JRuby的Mozilla Rhino
  • node .js
  • Apple JavaScriptCore-随Mac OS X提供
  • Microsoft Windows Script Host (JScript)

(来自github.com/sstephenson/execjs#execjs)

3) Actually fixing the issue / Learning -利用选项1和选项2的知识搜索其他解决方案.我无法告诉你,我在看到选项1或选项2时关闭了多少个网页,而在实际找到有关我们所面临的根本问题的信息之前,它们是公认的解决方案.我们一直在寻找的唯一原因是,我们无法相信Rails团队会(1)在每一个脚手架生成的项目中插入一行导致问题的代码,或者(2)要求我们安装额外的软件来运行默认代码行.因此,我们最终解决了根本问题(您的里程可能会有所不同).

The Fix that worked for us:

JScript = ExternalRuntime.new(
    :name        => "JScript",
    :command     => "cscript //E:jscript //Nologo",
    :runner_path => ExecJS.root + "/support/jscript_runner.js",
    :encoding    => 'UTF-8' # CScript with //U returns UTF-16LE
)

接下来,停止并重新启动Rails服务器,刷新浏览器中产生原始错误的页面.希望现在页面加载没有错误.下面是我们最初发布结果的ExecJS问题帖子:https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

如果这没有解决问题,您可以随时覆盖修改后的运行时.rb和你(希望)制作的备份副本,一切都会回到原点.在这种情况下,考虑选项3并继续搜索.让我们知道什么最终对你有效..除非它正在删除require_树或安装 node .js,这已经有很多了.:)

Ruby-on-rails相关问答推荐

我try 使用Ruby on Rails7创建一个Carbon 足迹计算器.但我无法保存和用户S对象

Rails ActiveRecord::LogSubscriber 不输出详细查询日志(log)

我可以向 erb 变量插值添加一个类吗?

Ruby on Rails/Activerecord 排序自引用查询?

ArgumentError 用于 Ruby on Rails 中非常简单的初始化方法,没有参数

您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?

Rails 3 远程表单:如何指定内容类型?

在 Rails 3.2 中更新多行

File.open,写入和保存?

无法连接 localhost:3000 ruby​​ on rails in vagrant

如果 URL 不存在,请将 http(s) 添加到 URL?

如何从 Rails 路由中删除控制器名称?

使用devise gem点击确认链接后避免登录?

适合mysql比较的Ruby datetime

link_to 将参数与 url 一起发送并在目标页面上抓取它们

Ruby - 合并两个数组并删除重复的值

Active Record has_many:通过删除一条关联记录

:javascript haml 标签中的内联Ruby ?

Ruby 更新后:测试失败,assets资源 未声明为在生产中预编译

如何测试也定义为辅助方法的 ApplicationController 方法?