TypeError:对象不支持此属性或方法
Posted
技术标签:
【中文标题】TypeError:对象不支持此属性或方法【英文标题】:TypeError: Object doesn't support this property or method 【发布时间】:2015-07-02 12:16:57 【问题描述】:我创建了 Rails 应用程序,并在其中创建了一个数据库(空)。当我尝试查看我的产品页面时,我在http://localhost:3000/products 页面上收到以下错误。在迁移数据库之前,该应用程序运行正常。我正在使用 therubyracer,并且在 Windows 7 上。
ExecJS::ProgramError in Products#index
Showing C:/RailsInstaller/DevKit/home/JP/nameofapp/app/views/layouts/application.html.erb where line #16 raised:
TypeError: Object doesn't support this property or method
(in C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js.coffee)
Extracted source (around line #16):
13 <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
14
15 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
16 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
17 <%= csrf_meta_tags %>
18
19 </head>
Rails.root: C:/RailsInstaller/DevKit/home/JP/nameofapp
这是我在 Rails 服务器上得到的:
Started GET "/products" for 127.0.0.1 at 2015-04-23 22:28:06 -0400
ActiveRecord::SchemaMigration Load (0.0ms) SELECT "schema_migrations".* FROM
"schema_migrations"
Processing by ProductsController#index as HTML
Product Load (0.0ms) SELECT "products".* FROM "products"
Rendered products/index.html.erb within layouts/application (4.0ms)
Completed 500 Internal Server Error in 3391ms
ActionView::Template::Error (TypeError: Object doesn't support this property or
method
(in C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/turbolinks-2.5.3/lib/
assets/javascripts/turbolinks.js.coffee)):
13: <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.mi
n.js"></script>
14:
15: <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolin
ks-track' => true %>
16: <%= javascript_include_tag 'application', 'data-turbolinks-track' => t
rue %>
17: <%= csrf_meta_tags %>
18:
19: </head>
app/views/layouts/application.html.erb:16:in `_app_views_layouts_application_h
tml_erb__912949727_56715336'
Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8
/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.0ms)
Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8
/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
(6.0ms)
Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.1.8
/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within
rescues/layout (27.0ms)
感谢您的帮助。
【问题讨论】:
造成这种情况的一个潜在原因可能是您安装的 gem 已过时或需要更新到更新的版本。您是否尝试过删除 'data-turbolinks-track' => true,只是为了看看是否有任何改变? 感谢您的建议。我有最新的:execjs 2.5.2 和 turbolinks 2.5.3。当我删除 true %> 时,它作为 FYI 工作。 Rails-4, ExecJS::ProgramError in Pages#welcome的可能重复 下面提到的链接,帮我解决同样的问题。 ***.com/questions/12520456/… 【参考方案1】:如果不使用布局,请将“layout false”放在控制器文件中,就在类标题下方:
类 ABCController
【讨论】:
【参考方案2】:对我来说,解决方案是删除-
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'%>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
来自
app\views\layout\application.html.erb
【讨论】:
【参考方案3】:我认为最好的解决方案是删除 application.js 文件中的斜杠,例如
= require jquery
= require jquery_ujs
= require turbolinks
= require_tree .
【讨论】:
【参考方案4】:原因是因为NodeJS没有安装。如果您安装它,问题应该会消失。
但是,这在application.js
中也可以使用:
//= require jquery
//= require jquery_ujs
//= require turbolinks
// require_tree .
但这不是首选方法,因为这只是禁用 Rails 功能。例如,ActionCable 不适用于此更改。
【讨论】:
【参考方案5】:出现错误是因为在找到位于 app/assets 中的正确资产时出现问题。要解决此问题,您可以按照以下步骤操作。
将 gem 'coffee-script-source', '1.8.0' 添加到 Gemfile 并运行 bundle install 然后 运行 bundle update coffee-script-source 重启 Rails 服务器 或者有一个肮脏的解决方法是从
更改代码<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
到
<%= stylesheet_link_tag "default", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "default", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
但请注意,此解决方法并不能真正解决应用程序问题,它只会使您的应用程序在没有预期的样式表和 javascript 的情况下工作。
【讨论】:
我刚刚添加了“gem coffee-rails”,然后捆绑,一切恢复正常。以防万一这对任何人都有帮助,我正在 Windows 上工作并使用“无咖啡脚本”命令构建项目。 gem 'coffee-script-source', '1.8.0' 是解决方案。即使是coffee-script-source 1.12 仍然不能在Windows 上运行。 3 年后,这仍然是一个问题。这仍然是解决方案。非常感谢!【参考方案6】:我从 application.js 中删除了 require_tree 并且它起作用了
//= require jquery
//= require jquery_ujs
//= require turbolinks
// require_tree .
【讨论】:
这并不能解决问题,并且会导致依赖资产管道的 js 部分的任何 gem/依赖项出现问题。【参考方案7】:经过仔细研究,这是我偶然发现的解决方案。只要确保您安装了最新版本的NodeJs。安装 NodeJs 后,请确保重新启动我们的系统。但是,更新 Windows 操作系统非常重要。你应该没事的。如果您使用的是RubyMine,那么现在一切都应该正常了。无需为咖啡脚本问题烦恼。 ExecJs 程序错误似乎与 NodeJs 及其相关模块更相关。
【讨论】:
【参考方案8】:我也遇到了这个问题,请查看@Kevin P 在此线程ExecJS::RuntimeError on Windows trying to follow rubytutorial 上的广泛解决方案。此外,@evedoevelli 在另一个线程上的解决方案:Rails ExecJS::ProgramError in Pages#home? 有效。我使用了第二种解决方案,它是最新的日期。
【讨论】:
最后一个链接对我有帮助。非常感谢!以上是关于TypeError:对象不支持此属性或方法的主要内容,如果未能解决你的问题,请参考以下文章
“对象不支持此属性或方法”试了很多方法,换了浏览器还是解决不了
Object.assign() 之 IE 兼容 (TypeError: 对象不支持“assign”属性或方法)