Object不支持此属性或方法Rails Windows 64bit

Mat*_*t P 42 javascript ruby-on-rails

我在Surface Pro 3上安装了Rails,并在尝试查看页面后遇到此错误.我已经尝试了一些建议,比如用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'
Run Code Online (Sandbox Code Playgroud)

Jes*_*ssa 106

Coffee脚本1.9.0与Windows不兼容.在我的Windows 7计算机上,使用1.8.0版解决了这个问题.

添加到Gemfile

gem 'coffee-script-source', '1.8.0'
Run Code Online (Sandbox Code Playgroud)

然后,跑

bundle update coffee-script-source
Run Code Online (Sandbox Code Playgroud)

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

  • 这有效,但感觉哦.所以.脏 (8认同)
  • 强制`coffee-script-source`到1.8.0对我来说非常合适,Rails 4.1.1,`coffee-script` 2.3.0,`coffee-rails` 4.0.1 (4认同)

小智 15

有同样的问题(做一个'hello world'应用所有的东西......)但是无法让coffeescript 1.8.0修复工作.在这里找到了解决方案: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 %>

这个和它现在一直很好用.


Ral*_*och 8

与流行的看法相反,Rails并不像他们声称的那样是跨平台兼容的.如果它是在窗户上工作,开箱即用.像你一样,我尝试了所有可用的选项.

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

我改变execjs使用UTF-8和jscript,没有效果.这是通过编辑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
)
Run Code Online (Sandbox Code Playgroud)

我也尝试安装therubyracer,导致libv8依赖不能编译的问题.我将我的python 2.7安装添加到windows系统路径,并安装了libv8.然后它说安装了libv8但是当我试图安装therubyracer时它说找不到libv8.我卸载了libv8并再次尝试,它说libv8无法编译.这对我来说足以让我确定不能在windows上使用therubyracer,所以我从我的Gemfile中评论它,在我的windows系统路径上留下了python 2.7.

我更新了coffee-script-source,将以下内容添加到我的Gemfile中

gem 'coffee-script-source', '1.9.0'
Run Code Online (Sandbox Code Playgroud)

将coffee-script-source添加到我的Gemfile后,我运行了gem update coffee-script-source,这也没有解决问题.

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

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

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

// = require_tree.

最后运行以下命令以确保在Node.js中正确安装了coffee-script

npm install -g coffee-script
Run Code Online (Sandbox Code Playgroud)


sup*_*ary 7

这是由64位Windows和CoffeeScript gem之间的不兼容引起的.

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

默认情况下,在Rails中,CoffeeScript出现在两个地方:

  • 默认的脚手架生成器生成一个咖啡脚本文件.
  • Turbolinks是CoffeeScript.

解决此问题的最简单方法是简单地删除CoffeeScript.无论如何你可能根本不需要它.

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