对象不支持这个属性或方法Rails Windows 64位

我在Surface Pro 3上安装了Rails,并在尝试查看页面后遇到此错误。 我已经尝试了几个build议,比如用libv8安装rubyracer,但没有帮助。

TypeError:Object不支持这个属性或方法(在c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js。咖啡)

这是我的gemfile:

source 'http://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.1.8' # Use sqlite3 as the database for Active Record gem 'sqlite3' # Use SCSS for stylesheets gem 'sass-rails', '~> 4.0.3' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # Use CoffeeScript for .js.coffee assets and views gem 'coffee-rails', '~> 4.0.0' # See https://github.com/sstephenson/execjs#readme for more supported runtimes gem 'therubyracer', platforms: :ruby # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem 'turbolinks' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.0' # bundle exec rake doc:rails generates the API under doc/api. gem 'sdoc', '~> 0.4.0', group: :doc gem 'libv8', '~> 3.16.14.7' # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use unicorn as the app server # gem 'unicorn' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development # Use debugger # gem 'debugger', group: [:development, :test] # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin] gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git' gem 'font-awesome-rails' gem 'simple_form' gem 'devise' 

与stream行的看法相反,Rails并没有跨平台的兼容性。 如果是的话,它会在窗口上工作,开箱即用。 就像你我已经尝试了所有可用的选项。

这是使用Ruby 2.1.5p273 / Rails 4.2.0解决的

我改变了execjs与jscript使用UTF-8,没有任何效果。 这通过编辑C:\ RailsInstaller \ Ruby2.1.0 \ lib \ ruby​​ \ gems \ 2.1.0 \ gems \ execjs-2.2.2 \ lib \ execjs \ runtimes.rb将JScript =块更改为以下内容。

 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 ) 

我也尝试安装therubyracer导致与libv8依赖不编译问题。 我添加了我的Python 2.7安装到Windows系统path,并安装了libv8。 然后它说libv8被安装,但是当我试图安装therubyracer它说libv8无法find。 我卸载libv8并再次尝试,它说libv8无法编译。 这足以让我确定therubyracer不会在windows上工作,所以我从我的Gemfile中注释掉了,在我的windows系统path上留下了python 2.7。

我更新了咖啡脚本源,通过添加以下到我的Gemfile

 gem 'coffee-script-source', '1.9.0' 

joincoffee-script-source到我的Gemfile后,我运行了gem update coffee-script-source ,这也没有解决问题。

然后我安装了node.js,这工作了5分钟,直到我生成一个新的控制器,并再次被打破。

注意:安装node.js之后,您需要打开一个新的命令提示符,以获取在安装node.js时设置的系统path的更新。

最后解决这个问题的是打开app \ assets \ javascripts \ application.js文件并删除最后一行

// = require_tree。

最后运行下面的命令,确保咖啡脚本在Node.js中正确安装

 npm install -g coffee-script 

咖啡脚本1.9.0与Windows不兼容。 在我的Windows 7机器上,使用版本1.8.0解决了这个问题。

添加到Gemfile

 gem 'coffee-script-source', '1.8.0' 

然后运行

 bundle update coffee-script-source 

并重新启动服务器(如果需要)

有同样的问题(做一个'你好世界'的应用程序的所有东西…),但无法得到咖啡的1.8.0修复工作。 在这里find一个解决scheme: http : //mech.xyz/how-to-fix-ruby-on-rails-turbolinks-js-coffee-error-windows/

脚步:

  1. 导航到\ app \ views \ layouts \ application.html.erb
  2. 从第6行更改

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

<%= javascript_include_tag '**defaults**', 'data-turbolinks-track' => true %>

这是否现在工作正常。

这是由64位Windows和CoffeeScript gem之间的不兼容造成的。

这确实是一个CoffeeScript问题。 它似乎只影响64位Windows机器。 32位Windows是好的。

CoffeeScript默认在两个地方出现在Rails中:

  • 默认脚手架生成器制作咖啡脚本文件。
  • Turbolinks是CoffeeScript。

解决这个问题最简单的方法就是简单地删除CoffeeScript。 无论如何你可能不需要它。

  1. 删除app / assets / javascripts中生成的coffeeScript文件。
  2. 从gemfile中删除turbolinks gem,然后捆绑安装。
  3. 编辑assets / stylesheets / application.js以删除turbolinks include。

我发现你的错误在Windows上看起来像这个ExecJS :: RuntimeError试图按照rubytutorial

我通过取消注释“assets \ javascripts \ application.js”中的行// = require_tree来修复我的系统

 = require_tree