【问题标题】:Object doesn't support this property or method Rails Windows 64bit对象不支持此属性或方法 Rails Windows 64bit
【发布时间】:2015-04-03 10:45:54
【问题描述】:

我在 Surface Pro 3 上安装了 Rails,并在尝试查看页面后遇到此错误。我尝试了一些建议,例如使用 libv8 安装 ruby​​racer,但没有帮助。

TypeError:对象不支持此属性或方法(在 c:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js.coffee)

这是我的 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'

【问题讨论】:

标签: javascript ruby-on-rails


【解决方案1】:

Coffee 脚本 1.9.0 不能很好地与 Windows 配合使用。在我的 Windows 7 机器上,使用 1.8.0 版本解决了这个问题。

添加到 Gemfile

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

然后,运行

bundle update coffee-script-source

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

【讨论】:

  • 强制 coffee-script-source 到 1.8.0 对我来说非常有效,Rails 4.1.1, coffee-script 2.3.0, coffee-rails 4.0.1
  • 谢谢你帮我修好了(不修改runtimes.rb
  • @RichPeck 同意。迟早我们需要更新咖啡脚本和/或依赖它的东西。发生这种情况时,我会尽量保持更新。
  • 如果这解决了上述问题的问题,则需要选择答案作为正确答案。这对我也有用。谢谢。
  • 注意:如果 bundle update ... 不起作用,由于 command not found 错误,那么您需要首先通过调用:gem install bundler 来安装捆绑程序。 . . . .注意 2:用于在单词末尾安装带有 R 的调用“bundleR”。最后使用没有 R 的调用“bundle”。
【解决方案2】:

遇到了同样的问题(对所有事物执行“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 %>

这样做了,现在运行良好。

【讨论】:

  • 它在“hello world”应用程序中对我有用,但在真正的应用程序中却不行。似乎 turbolinks 不能以这种方式正常工作。
  • 就我而言,它位于app\views\shared\backend\_javascripts.html.erbapp\views\shared\_javascripts.html.erb。但它只让我到目前为止;然后我开始看到空白页。
  • 这会导致js在加载coffeescript之前抛出错误......不是真正的解决方案
【解决方案3】:

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

使用 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 系统路径,并安装了 libv8。然后它说安装了libv8,但是当我尝试安装rubyracer时它说找不到libv8。我卸载了libv8并再次尝试,它说libv8无法编译。这足以让我确定 therubyracer 无法在 Windows 上运行,所以我从我的 Gemfile 中将其注释掉,将 python 2.7 留在我的 Windows 系统路径中。

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

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

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

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

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

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

//= 要求树。

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

npm install -g coffee-script

【讨论】:

  • 这是使用 ruby​​installer.org 安装的。我摆脱了树线,它仍然发生。太令人沮丧了!
  • 正如这个答案中所建议的,我还安装了 node.js 并将 python (2.7) 添加到我的系统路径中。这些步骤可能会起作用,但我也只是使用 railsinstaller 安装了 ruby​​,尽管我最终使用了 Ruby 2.1.0。
  • 我忘了提到将 gem 'coffee-script-source', '1.9.0' 添加到我的 gemfile 中,但我不确定是否对 coffee-script-source 进行 gem 更新,即也可能对结果产生影响。我真的尝试了我能找到的一切。
  • @Matt,我能够通过运行 npm install -g coffee-script 将“//= require_tree.”恢复到 application.js,如果这能解决您的问题,请告诉我。
  • 真相:“与流行的看法相反,Rails 并不像他们声称的那样跨平台兼容。如果是这样,它就可以在 Windows 上运行,开箱即用。”
【解决方案4】:

这是由 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 包括。

【讨论】:

    【解决方案5】:

    我发现你的错误看起来像这样 ExecJS::RuntimeError on Windows trying to follow rubytutorial

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

    = require_tree
    

    【讨论】:

    • 这会导致js在加载coffeescript之前抛出错误......不是真正的解决方案
    猜你喜欢
    • 2015-05-07
    • 2013-10-05
    • 1970-01-01
    • 2015-07-02
    • 2019-04-09
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多