TypeError: Object doesn't support this property or method

落爺英雄遲暮 提交于 2019-12-19 03:55:14

问题


I have created rails application where I created a database (empty). When I try to view my products page, I receive the following error on my http://localhost:3000/products page. Before migrating the database, the application did function. I am using therubyracer and am on 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

This is what I got on the Rails server:

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)

Thank you for any help.


回答1:


I removed the require_tree from application.js and it worked

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
// require_tree .



回答2:


The error occurs because there is some problem finding the correct assets which are located in app/assets. To resolve the issue, you can following below steps.

Add gem 'coffee-script-source', '1.8.0' into Gemfile and run bundle install then Run bundle update coffee-script-source Restart rails server Or there is a dirty workaround which is to change the code from

<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>

to

<%= stylesheet_link_tag "default", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "default", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>

But note this workaround doesn't really resolve the application issue, it just makes your application works without expected stylesheets and javascripts.




回答3:


I think Best Solution is Removing the slashes in application.js file like

= require jquery
= require jquery_ujs
= require turbolinks
= require_tree .



回答4:


I had this issue too, checkout the extensive solution on this thread, ExecJS::RuntimeError on Windows trying to follow rubytutorial by @Kevin P. Also,the solution by, @evedoevelli, on another thread: Rails ExecJS::ProgramError in Pages#home? works. I used the second solution with it been the most recent date-wise.




回答5:


For me,solution was to remove-

 <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload'%>
 <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

from

app\views\layout\application.html.erb




回答6:


Upon careful research this is the solution I stumbled upon. Just make sure you have the latest version of NodeJs installed. After installing NodeJs, make sure you restart our system. However it is very important that you update your windows OS. You should be fine. If you are using RubyMine everything should work by now. No need to be troubling your head over the coffee-script issue. The ExecJs Program error seem to be more related to the NodeJs and its associated modules.




回答7:


The reason is because NodeJS is not installed. If you install it, the problem should go away.

However, this would work as well in application.js:

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
// require_tree .

But this is just not the prefered method because all this does is disable rails functionality. For example, ActionCable will not work with this change.




回答8:


If you do not use layouts, put "layout false" in the controller file, just below class title:

class ABCController < ApplicationController "layout false" def index ... ..



来源:https://stackoverflow.com/questions/29838237/typeerror-object-doesnt-support-this-property-or-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!