对象不支持这个属性或方法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/
脚步:
- 导航到\ app \ views \ layouts \ application.html.erb
- 从第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。 无论如何你可能不需要它。
- 删除app / assets / javascripts中生成的coffeeScript文件。
- 从gemfile中删除turbolinks gem,然后捆绑安装。
- 编辑assets / stylesheets / application.js以删除turbolinks include。
我发现你的错误在Windows上看起来像这个ExecJS :: RuntimeError试图按照rubytutorial
我通过取消注释“assets \ javascripts \ application.js”中的行// = require_tree来修复我的系统
= require_tree